Comment puis-je automatiser l'exécution des commandes à distance via SSH à plusieurs serveurs en parallèle?

J'ai cherché un peu sur des questions similaires, mais d'autres que l'exécution d'une commande ou peut-être un peu de commande, avec des articles tels que:

ssh user@host -t sudo su -

Cependant, que faire si j'ai essentiellement besoin d'exécuter un script sur (disons) 15 serveurs à la fois. Est-ce faisable en bash? Dans un monde parfait, j'ai besoin d'éviter l'installation d'applications si possible pour tirer cette off. Pour la commodité du raisonnement, disons simplement que j'ai besoin de faire ce qui suit à travers 10 hôtes:

  1. Déployer un nouveau conteneur Tomcat
  2. Déployer une application dans le conteneur, et de le configurer
  3. Configurer un vhost Apache
  4. Recharger Apache

J'ai un script qui fait tout cela, mais il s'appuie sur me connecter à tous les serveurs, en tirant sur un script vers le bas à partir d'une mise en pension, puis de l'exécuter. Si ce n'est pas faisable en bash, quelles alternatives proposez-vous? Ai-je besoin d'un plus gros marteau, comme Perl (Python pourrait être préférée depuis que je peux garantir, Python est sur toutes les cases dans une RHEL environnement grâce à yum/up2date)? Si quelqu'un peut le point de moi de toute information utile, ça serait grandement apprécié, surtout si c'est faisable en bash. Je me contenterai pour le Perl ou Python, mais je ne sais pas aussi bien ceux (de travail). Merci!

Utilisation sudo -sH au lieu de sudo su -.
Êtes-vous plus demandant comment exécuter plusieurs lignes à distance, ou comment exécuter les lignes "en parallèle" sur plusieurs hôtes simultanément? Pour les parallèles, voir serverfault.com/a/875812/27813

OriginalL'auteur f4nt | 2008-10-28