Fabric: automatice sus tareas de administración de Linux y las implementaciones de aplicaciones a través de SSH


Cuando se trata de administrar máquinas remotas y la implementación de aplicaciones, existen varias herramientas de línea de comandos, aunque muchas tienen un problema común de falta de documentación detallada.

En esta guía, cubriremos los pasos para presentar y comenzar a usar fabric para mejorar la administración de grupos de servidores.

Fabric es una biblioteca de Python y una poderosa herramienta de línea de comandos para realizar tareas de administración del sistema, como ejecutar comandos SSH en múltiples máquinas y la implementación de aplicaciones.

Lea también: Use Shell Scripting para automatizar las tareas de mantenimiento del sistema Linux

Tener un conocimiento práctico de Python puede ser útil cuando se usa Fabric, pero ciertamente no es necesario.

Razones por las que debería elegir la tela sobre otras alternativas:

  1. Simplicity
  2. It is well-documented
  3. You don’t need to learn another language if you’re already a python guy.
  4. Easy to install and use.
  5. It is fast in its operations.
  6. It supports parallel remote execution.

Cómo instalar la herramienta Fabric Automation en Linux

Una característica importante de Fabric es que las máquinas remotas que necesita administrar solo necesitan tener instalado el servidor OpenSSH estándar. Solo necesita ciertos requisitos instalados en el servidor desde el cual está administrando los servidores remotos antes de poder comenzar.

  1. Python 2.5+ with the development headers
  2. Python-setuptools and pip (optional, but preferred) gcc

Fabric se instala fácilmente usando pip (muy recomendable), pero también puede preferir elegir su administrador de paquetes predeterminado yum, dnf o apt-get para instalar el paquete fabric, normalmente llamado fabric o python-fabric.

Para distribuciones basadas en RHEL/CentOS, debe tener el repositorio EPEL instalado y habilitado en el sistema para instalar el paquete de estructura.

# yum install fabric   [On RedHat based systems]  
# dnf install fabric   [On Fedora 22+ versions]

Para Debian y sus derivados, como Ubuntu y Mint, los usuarios pueden simplemente hacer apt-get para instalar el paquete fabric como se muestra:

# apt-get install fabric

Si desea instalar la versión de desarrollo de fabric, puede usar pip para obtener la rama maestra más reciente.

# yum install python-pip       [On RedHat based systems] 
# dnf install python-pip       [On Fedora 22+ versions]
# apt-get install python-pip   [On Debian based systems]

Una vez que pip se haya instalado correctamente, puede usar pip para obtener la última versión de fabric como se muestra:

# pip install fabric

Cómo utilizar Fabric para automatizar las tareas de administración de Linux

Así que comencemos a aprender a usar Fabric. Durante el proceso de instalación, se agregó un script de Python llamado fab a un directorio en su ruta. El fabuloso script hace todo el trabajo cuando se usa tela.

Por convención, debe comenzar creando un archivo Python llamado fabfile.py usando su editor favorito. Recuerde que puede darle a este archivo un nombre diferente si lo desea, pero deberá especificar la ruta del archivo de la siguiente manera:

# fabric --fabfile /path/to/the/file.py

Fabric usa fabfile.py para ejecutar tareas. El fabfile debe estar en el mismo directorio donde ejecuta la herramienta Fabric.

Ejemplo 1: primero creemos un Hello World básico.

# vi fabfile.py

Agregue estas líneas de código en el archivo.

def hello():
       print('Hello world, Tecmint community')

Guarde el archivo y ejecute el siguiente comando.

# fab hello

Veamos ahora un ejemplo de un fabfile.py para ejecutar el comando de tiempo de actividad en la máquina local.

Ejemplo 2: Abra un nuevo archivo fabfile.py de la siguiente manera:

# vi fabfile.py

Y pegue las siguientes líneas de código en el archivo.

#!  /usr/bin/env python
from fabric.api import local
def uptime():
  local('uptime')

Luego guarde el archivo y ejecute el siguiente comando:

# fab uptime

La API de Fabric usa un diccionario de configuración que es el equivalente de Python de una matriz asociativa conocida como env , que almacena valores que controlan lo que hace Fabric.

env.hosts es una lista de servidores en los que desea ejecutar tareas de Fabric. Si su red es 192.168.0.0 y desea administrar el host 192.168.0.2 y 192.168.0.6 con su fabfile, puede configurar env.hosts de la siguiente manera:

#!/usr/bin/env python
from  fabric.api import env
env.hosts = [ '192.168.0.2', '192.168.0.6' ]

La línea de código anterior solo especifica los hosts en los que ejecutará las tareas de Fabric, pero no hará nada más. Por lo tanto, puede definir algunas tareas, Fabric proporciona un conjunto de funciones que puede utilizar para interactuar con sus máquinas remotas.

Aunque existen muchas funciones, las más utilizadas son:

  1. run – which runs a shell command on a remote machine.
  2. local – which runs command on the local machine.
  3. sudo – which runs a shell command on a remote machine, with root privileges.
  4. Get – which downloads one or more files from a remote machine.
  5. Put – which uploads one or more files to a remote machine.

Ejemplo 3: Para hacer eco de un mensaje en varias máquinas, cree un fabfile.py como el que se muestra a continuación.

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def echo():
      run("echo -n 'Hello, you are tuned to Tecmint ' ")

Para ejecutar las tareas, ejecute el siguiente comando:

# fab echo

Ejemplo 4: Puede mejorar el fabfile.py que creó anteriormente para ejecutar el comando de tiempo de actividad en la máquina local, de modo que ejecute el comando de tiempo de actividad y también verifique el uso del disco usando el comando df en múltiples máquinas de la siguiente manera:

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def uptime():
      run('uptime')
def disk_space():
     run('df -h')

Guarde el archivo y ejecute el siguiente comando:

# fab uptime
# fab disk_space

Ejemplo 4: Veamos un ejemplo para implementar el servidor LAMP (Linux, Apache, MySQL/MariaDB y PHP) en un servidor Linux remoto.

Escribiremos una función que permitirá instalar LAMP de forma remota utilizando privilegios de root.

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  run ("yum install -y httpd mariadb-server php php-mysql")
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  sudo("apt-get install -q apache2 mysql-server libapache2-mod-php5 php5-mysql")

Guarde el archivo y ejecute el siguiente comando:

# fab deploy_lamp

Nota: Debido a la gran producción, no nos es posible crear un screencast (gif animado) para este ejemplo.

Ahora puede automatizar las tareas de administración del servidor Linux utilizando Fabric y sus características y ejemplos dados anteriormente ...

  1. You can run fab –help to view help information and a long list of available command line options.
  2. An important option is –fabfile=PATH that helps you to specify a different python module file to import other then fabfile.py.
  3. To specify a username to use when connecting to remote hosts, use the –user=USER option.
  4. To use password for authentication and/or sudo, use the –password=PASSWORD option.
  5. To print detailed info about command NAME, use –display=NAME option.
  6. To view formats use –list option, choices: short, normal, nested, use the –list-format=FORMAT option.
  7. To print list of possible commands and exit, include the –list option.
  8. You can specify the location of config file to use by using the –config=PATH option.
  9. To display a colored error output, use –colorize-errors.
  10. To view the program’s version number and exit, use the –version option.

Resumen

Fabric es una herramienta poderosa y está bien documentada y proporciona un uso fácil para los principiantes. Puede leer la documentación completa para comprenderlo mejor. Si tiene alguna información para agregar o en caso de errores que encuentre durante la instalación y el uso, puede dejar un comentario y encontraremos formas de solucionarlos.

Referencia: Documentación de la tela