4 herramientas para ejecutar comandos en múltiples servidores Linux simultáneamente

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 servidores

2. 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 pdsh

Si, 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 clusterssh

Los 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?

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


All Articles