Herramienta de automatización y despliegue que permite ejecutar tareas en múltiples servidores de manera remota en serie o en paralelo. Se utiliza principalmente a través de un archivo de script Python llamado fabfile.py. En este archivo, se define las tareas que se han de ejecutar en los servidores remotos.
1.-
Para ejecutar en un servidor remoto el comando uname -a para obtener información del sistema.
$ nano fabfile.py
from fabric import Connection
#
def obtener_info():
c = Connection('usuario@servidor_remoto')
result = c.run('uname -a', hide=True)
print(f"Resultado: {result.stdout}")
$ fab obtener_info
2.-
Ejecutar comandos en múltiples servidores en paralelo
$ nano fabfile.py
from fabric import Connection, SerialGroup
#
def obtener_info_paralelo():
servidores = ['usuario@servidor1', 'usuario@servidor2', 'usuario@servidor3']
grupo = SerialGroup(*servidores)
resultados = grupo.run('uname -a', hide=True)
for conexion, resultado in resultados.items():
print(f"{conexion.host}: {resultado.stdout}")
$ fab obtener_info_paralelo