Comment lancer une commande sur plusieurs serveurs Linux en même temps ?

http://korben.info/comment-lancer-une-commande-sur-plusieurs-serveurs-linux-en-meme-temps.html
Si vous gérez plusieurs serveurs, sachez qu’il existe une suite d’outils qui s’appelle PSSH et qui permet grâce à différents outils d’exécuter une seule et même commande, simultanément sur toutes vos machines. pssh permet de lancer des instances de SSH en parallèle pscp permet de copier des fichiers en parallèle prsync permet de synchroniser des…

Autre solution que j’aime beaucoup : Ansible
Ca permet de passer des commandes sur une machine distante aussi,
mais cela permet de gérer des “recette” de commandes à passer sur une ou des machines.
http://docs.ansible.com/

Je m’en sers énormément pour installer, gérer et maintenir mes machines.

J’installe même mon poste de développement avec un script ansible (Java, mysql, node etc…)
Ca permet de migrer ou d’installer une nouvelle machine très rapidement. (Une fois qu’on s’est écrit ses scripts évidement)

En plus il y a quelques roles ansible dispos pour la communauté sur http://galaxy.ansible.com.

Peut-être qu’il y a des fonctionnalités dont tu n’as pas parlé, mais comme ça, j’ai du mal à voir l’apport de ça par rapport à un bon vieux script shell contenant une boucle for qui exécute ses instructions en background (avec le symbole &). En fait j’en ai déjà fait pour mon ancien boulot.

sinon il y a toujours ClusterSSH : http://doc.ubuntu-fr.org/cssh
j’aime bien le concept de voir le shell en live.

sinon moins intrusif sur les serveurs ya terminator. Et bien sûr après ya puppet ou mieux saltstack (quand on a des milliers de serveurs c’est obligatoire)

L’intérêt d’ansible c’est de pouvoir passer le / les scripts sur X machines à partir d’une machine maitre.

Par exemple, si tu veux installer un cluster de machine avec de la répartition de charge .

Tu écris 1 rôle “loadbalancer” pour la machine A qui hébergera le serveur apache qui va faire le loadBalancing vers B C et D .

Ensuite tu écris un autre role “serveurWeb” qui par exemple, install apache, php, va chercher ton site sur un repository git quelqueconque, le met dans le bon endroit avec les bon droits, etc …(ou un tomcat, etc…)

Ensuite dans un fichier d’inventaire tu dis que la mahcine A fait parti du group LoadBalancer, et que A B C et D sont des serveurWeb

tu lance 1 commande ansible
Ca se connecte en ssh à toutes les machines (en // ou en série au choix)
Passe les commandes sur tout tes serveurs
et t’affiche un joli reporting pour te dire comment ça s’est passé,
quelles sont les machines qui ont été modifiée, etc…

6 semaines plus tard, ton site a tellement de succès que tu dois rajouter 3 machines pour supporter la charge,
tu vas dans ton fichier inventaire, tu rajotuer E F G dans le groupe serveur WEB
tu relances ton script ansible, ca ne te met à jour que E F G

3 mois plus tard, tu te faches avec ton herbergeur
Tu te prend des serveur bis chez ton nouvel herbegeur.
tu n’as qu’a changer les ips dans ton fichier inventaire … et mettre à jour tes redirection de domaine .

Ça peut très bien se faire avec un script, assez simple d’ailleurs.
C’est facile d’importer un fichier de conf contenant des IPs organisées
en groupes/rôles.

Après Ansible c’est aussi tout un tas de module :

http://docs.ansible.com/ansible/modules_by_category.html

Pour : installer des serives, ajouter des users, créer des bdd,
templatisation de fichier (fichier à trou) , pour un vhost apache2 par exemple …

Je me suis fais tout un tas de role pour installer :
gitlab,
jenkins,
redmine,
java,
node,
mysql,
etc …

après tu peux toujours faire à la main. et lancer tes scripts shell à l’ancienne.

J’oubliais, ya aussi rundeck qui est pas mal!!

ps: c’est normal que le bouton connexion sur le site korben.info ne fonctionne pas? (genre erreur trackEvent not defined ou quelque chose dans le genre)

Autre solution encore, je me sert plus que de MobaXTerm plutôt que Putty (Windows donc) qui à un mode multi exécution : on ouvre 4 terminal, on l’active, et tout ce qui est tapé dans un terminal est répliqué dans les 3 autres, l’avantage c’est qu’en cas d’erreurs sur un des terminaux, on le voit tout de suite

MobaXTerm

Bonne chose de parler de cet outil, toutefois il y a plus simple pour l’installer sur Debian ou ses dérivés

apt search pssh
En train de trier... Fait
Recherche en texte intégral... Fait
pssh/testing,testing 2.3.1-1 all
  Parallel versions of SSH-based tools

Sur nos serveurs Nutanix on utilise allssh :slight_smile:

Il y a aussi l’excellent fabric, plus un micro firmware mais du coup très puissant : http://www.fabfile.org/