El artículo, cuya traducción publicamos hoy, está dedicado a las tecnologías de ejecución simultánea de comandos en varios servidores Linux. Aquí hablaremos de varias herramientas conocidas que implementan dicha funcionalidad. Este material es útil para los administradores de sistemas que, por ejemplo, regularmente tienen que verificar el estado de muchos sistemas remotos. Se supone que el lector ya tiene varios servidores a los que se organiza el acceso SSH. Además, mientras se trabaja con varias máquinas simultáneamente, es muy útil configurar el acceso SSH a ellas
por clave, sin contraseña . Este enfoque, por un lado, mejora la seguridad del servidor y, por otro lado, facilita el trabajo.

1. PSSH - SSH paralelo
PSSH es un juego de herramientas de línea de comandos de código abierto escrito en Python y diseñado para ejecutar comandos SSH en paralelo en muchos sistemas Linux. Funciona rápidamente y es fácil de aprender. PSSH incluye herramientas como
parallel-ssh
,
parallel-scp ,
parallel-rsync
,
parallel-slurp
y
parallel-nuke
(para obtener detalles sobre estas herramientas, consulte man).
Antes de instalar
parallel-ssh
en un sistema Linux, primero debe instalar
pip
. Así es como se hace en diferentes distribuciones:
$ 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+
Luego,
parallel-ssh
instala usando
pip
:
$ sudo pip install parallel-ssh
A continuación, debe ingresar los nombres de host o las direcciones IP de los servidores remotos de Linux y la información del puerto en el
hosts
(de hecho, puede asignarle el nombre que desee). Aquí necesitamos este comando:
$ vim hosts
Aquí hay un ejemplo del contenido de dicho archivo:
192.168.0.10:22 192.168.0.11:22 192.168.0.12:22
Después de que todo lo necesario se haya ingresado en el archivo, es hora de ejecutar
parallel-ssh
, pasando a esta utilidad el nombre del archivo con la opción
-h
, así como los comandos que deben ejecutarse en todos los servidores cuyas direcciones están en el
hosts
. El indicador
-i
de la utilidad se usa para mostrar lo que ingresa a la salida estándar y las secuencias de error después de completar los comandos en los servidores.
El comando de lanzamiento
parallel-ssh
podría verse así:
$ parallel-ssh -h hosts "uptime; df -h"
La siguiente figura muestra el uso de la utilidad cuando se trabaja con tres servidores.
La utilidad parallel-ssh ejecuta comandos en múltiples servidores2. Pdsh: utilidad de shell remota paralela
Pdsh es, nuevamente, una solución de código abierto, que es un shell para ejecutar comandos en múltiples servidores Linux al mismo tiempo.
Aquí se explica cómo instalar
pdsh
en varias distribuciones:
$ sudo apt install pdsh #Debian/Ubuntu # yum install pdsh #RHEL/CentOS # dnf install pdsh #Fedora 22+
Para ejecutar comandos en varios servidores, las direcciones de estos servidores, como con
parallel-ssh
, deben agregarse al archivo, que también se puede llamar
hosts
. Luego debe ejecutar
pdsh
de la siguiente forma:
$ pdsh -w ^hosts -R ssh "uptime; df -h"
Aquí, el indicador
-w
se usa para indicar el archivo con la lista de servidores, el indicador
-R
se usa para indicar el módulo de comando remoto (entre los módulos de comando remoto disponibles están
ssh
,
rsh
,
exec
;
rsh
usa por defecto). Tenga en cuenta el icono
^
delante del nombre del archivo de la lista de servidores.
Así es como se ve trabajar con este equipo.
Ejecución de comandos en múltiples servidores usando pdshSi, cuando llamó a
pdsh
, no especificó una lista de comandos que deben ejecutarse en los servidores, esta utilidad se iniciará en modo interactivo. Los detalles sobre
pdsh
se pueden encontrar en la página de manual correspondiente.
3. ClusterSSH
ClusterSSH es una herramienta de línea de comandos para administrar clústeres de servidores. Inicia la consola de administración y, para cada servidor, una ventana
xterm
separada. Después de eso, todos estos servidores pueden ejecutar los mismos comandos al mismo tiempo.
Instalar
clusterssh
:
$ sudo apt install clusterssh #Debian/Ubuntu # yum install clusterssh #RHEL/CentOS $ sudo dnf install clusterssh #Fedora 22+
Ahora, para conectarse a los servidores, debe ejecutar un comando de la siguiente forma:
$ clusterssh linode cserver contabo
Puedes usar este diseño:
$ clusterssh username@server1 username@server2 username@server3
Después de eso, verá algo similar al que se muestra en la siguiente figura.
Trabajando con múltiples servidores usando clustersshLos comandos ingresados en la consola del administrador se ejecutan en todos los servidores. Para ejecutar comandos en un servidor separado, debe ingresarlos en una ventana abierta para ello.
4. Ansible
Ansible es una herramienta de código abierto popular para automatizar procesos de TI. Se utiliza para configurar y administrar sistemas, instalar aplicaciones y resolver otros problemas.
Instalar
ansible
:
$ sudo apt install ansible #Debian/Ubuntu # yum install ansible #RHEL/CentOS $ sudo dnf install ansible #Fedora 22+
Después de eso, agregue las direcciones de los servidores al archivo
/etc/ansible/hosts
.
$ sudo vim /etc/ansible/hosts
Aquí hay un ejemplo de un fragmento de un archivo similar con varios sistemas unidos en el grupo de
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
Ahora, para obtener la información del comando de
uptime
y descubrir qué usuarios están conectados a los hosts incluidos en el grupo de
webservers
, puede usar la siguiente construcción:
$ ansible webservers -a "w " -u admin
Aquí, la opción
-a
se usa para especificar los argumentos pasados al módulo, y el indicador
-u
permite especificar el nombre de usuario predeterminado utilizado para conectarse a servidores remotos a través de SSH.
Tenga en cuenta que la
ansible
línea de comandos
ansible
permite ejecutar comandos solo uno a la vez.
Interacción con varios servidores utilizando herramientas ansibles.Resumen
En este artículo, hablamos sobre herramientas que están diseñadas para ejecutar simultáneamente comandos en varios servidores que ejecutan Linux. Si está considerando automatizar las tareas de administrar varios servidores, esperamos que encuentre aquí algo que le convenga.
Estimados lectores! ¿Conoces alguna utilidad útil que simplifique la administración de una gran cantidad de servidores?