4 outils pour exécuter des commandes sur plusieurs serveurs Linux simultanément

L'article, dont nous publions aujourd'hui la traduction, est consacré aux technologies d'exécution simultanée de commandes sur plusieurs serveurs Linux. Nous parlerons ici de plusieurs outils bien connus qui implémentent une telle fonctionnalité. Ce matériel est utile aux administrateurs système qui, par exemple, doivent régulièrement vérifier l'état de nombreux systèmes distants. Il est supposé que le lecteur dispose déjà de plusieurs serveurs auxquels l'accès SSH est organisé. De plus, tout en travaillant avec plusieurs machines simultanément, il est très utile de configurer l'accès SSH à celles-ci par clé, sans mot de passe . Cette approche, d'une part, améliore la sécurité du serveur et, d'autre part, facilite son utilisation.



1. PSSH - SSH parallèle


PSSH est une boîte à outils de ligne de commande open source écrite en Python et conçue pour exécuter des commandes SSH en parallèle sur de nombreux systèmes Linux. Cela fonctionne rapidement et est facile à apprendre. PSSH comprend des outils tels que parallel-ssh , parallel-scp , parallel-rsync , parallel-slurp et parallel-nuke (pour plus de détails sur ces outils, voir man).

Avant d'installer parallel-ssh sur un système Linux, vous devez d'abord installer pip . Voici comment cela se fait dans différentes distributions:

 $ sudo apt install python-pip python-setuptools   #Debian/Ubuntu # yum install python-pip python-setuptools        #RHEL/CentOS # dnf install python-pip python-setuptools        #Fedora 22+ 

Ensuite, parallel-ssh installé à l'aide de pip :

 $ sudo pip install parallel-ssh 

Ensuite, vous devez entrer les noms d'hôte ou les adresses IP des serveurs Linux distants et les informations de port dans le hosts (en fait, vous pouvez le nommer). Ici, nous avons besoin de cette commande:

 $ vim hosts 

Voici un exemple du contenu d'un tel fichier:

 192.168.0.10:22 192.168.0.11:22 192.168.0.12:22 

Une fois que tout le nécessaire a été entré dans le fichier, il est temps d'exécuter parallel-ssh , en transmettant à cet utilitaire le nom de fichier en utilisant l'option -h , ainsi que les commandes qui doivent être exécutées sur tous les serveurs dont les adresses se trouvent dans le hosts . L'indicateur -i de l'utilitaire est utilisé pour afficher ce qui entre dans les flux de sortie et d'erreur standard après l'achèvement des commandes sur les serveurs.

La commande de lancement parallel-ssh pourrait ressembler à ceci:

 $ parallel-ssh -h hosts "uptime; df -h" 

La figure suivante montre l'utilisation de l'utilitaire lorsque vous travaillez avec trois serveurs.


L'utilitaire parallel-ssh exécute des commandes sur plusieurs serveurs

2. Pdsh - Utilitaire Parallel Remote Shell


Pdsh est, encore une fois, une solution open source, qui est un shell pour exécuter des commandes sur plusieurs serveurs Linux en même temps.

Voici comment installer pdsh sur différentes distributions:

 $ sudo apt install pdsh         #Debian/Ubuntu # yum install pdsh              #RHEL/CentOS # dnf install pdsh              #Fedora 22+ 

Afin d'exécuter des commandes sur plusieurs serveurs, les adresses de ces serveurs, comme avec parallel-ssh , doivent être ajoutées au fichier, qui peut également être appelé hosts . Ensuite, vous devez exécuter pdsh sous la forme suivante:

 $ pdsh -w ^hosts -R ssh "uptime; df -h" 

Ici, l'indicateur -w est utilisé pour indiquer le fichier avec la liste des serveurs, l'indicateur -R est utilisé pour indiquer le module de commande à distance (parmi les modules de commande à distance disponibles sont ssh , rsh , exec ; rsh utilisé par défaut). Notez l'icône ^ devant le nom du fichier de liste de serveurs.

Voici à quoi ressemble le travail avec cette équipe.


Exécution de commandes sur plusieurs serveurs à l'aide de pdsh

Si, lorsque vous avez appelé pdsh , vous n'avez pas spécifié de liste de commandes devant être exécutées sur les serveurs, cet utilitaire démarre en mode interactif. Les détails sur pdsh se trouvent sur la page de manuel correspondante.

3. ClusterSSH


ClusterSSH est un outil en ligne de commande pour l'administration des clusters de serveurs. Il lance la console d'administration et, pour chaque serveur, une fenêtre xterm distincte. Après cela, tous ces serveurs peuvent exécuter les mêmes commandes en même temps.

Installez clusterssh :

 $ sudo apt install clusterssh    #Debian/Ubuntu # yum install clusterssh         #RHEL/CentOS $ sudo dnf install clusterssh    #Fedora 22+ 

Maintenant, pour vous connecter aux serveurs, vous devez exécuter une commande du formulaire suivant:

 $ clusterssh linode cserver contabo 

Vous pouvez utiliser cette conception:

 $ clusterssh username@server1 username@server2 username@server3 

Après cela, vous verrez quelque chose de similaire à celui illustré dans la figure suivante.


Utilisation de plusieurs serveurs à l'aide de clusterssh

Les commandes entrées dans la console d'administration sont exécutées sur tous les serveurs. Pour exécuter des commandes sur un serveur distinct, vous devez les saisir dans une fenêtre ouverte pour celui-ci.

4. Ansible


Ansible est un outil open source populaire pour automatiser les processus informatiques. Il est utilisé pour configurer et gérer des systèmes, installer des applications et résoudre d'autres problèmes.

Installer ansible :

 $ sudo apt install ansible       #Debian/Ubuntu # yum install ansible            #RHEL/CentOS $ sudo dnf install ansible       #Fedora 22+ 

Après cela, ajoutez les adresses des serveurs au fichier /etc/ansible/hosts .

 $ sudo vim /etc/ansible/hosts 

Voici un exemple d'un fragment d'un fichier similaire avec plusieurs systèmes réunis dans le groupe des webservers :

 # Ex 2: A collection of hosts belonging to the 'webservers' group [webservers] 139.10.100.147 139.20.40.90 192.30.152.186 

Maintenant, afin d'obtenir les informations de commande uptime et de savoir quels utilisateurs sont connectés aux hôtes inclus dans le groupe de webservers , vous pouvez utiliser la construction suivante:

 $ ansible webservers -a "w " -u admin 

Ici, l'option -a est utilisée pour spécifier les arguments passés au module, et l'indicateur -u vous permet de spécifier le nom d'utilisateur par défaut utilisé pour se connecter aux serveurs distants via SSH.

Veuillez noter que l' ansible ligne de commande ansible permet d'exécuter des commandes une seule à la fois.


Interaction avec plusieurs serveurs à l'aide d'outils ansibles

Résumé


Dans cet article, nous avons parlé des outils conçus pour exécuter simultanément des commandes sur plusieurs serveurs exécutant Linux. Si vous songez à automatiser les tâches de gestion de plusieurs serveurs, nous espérons que vous trouverez ici quelque chose qui vous convient.

Chers lecteurs! Connaissez-vous des utilitaires utiles qui simplifient l'administration d'un grand nombre de serveurs?

Source: https://habr.com/ru/post/fr426849/


All Articles