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 puede que no sea necesario.

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

  1. Sencillez
  2. Está bien documentado
  3. No es necesario que aprenda otro idioma si ya es aficionado a las pitones.
  4. Fácil de instalar y usar.
  5. Es rápido en sus operaciones.
  6. Es compatible con la ejecución remota en paralelo.

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 que está administrando los servidores remotos antes de poder comenzar.

  1. Python 2.5+ con los encabezados de desarrollo
  2. Python-setuptools y pip (opcional, pero preferido) gcc

Fabric se instala fácilmente usando pip (muy recomendado), pero también puede preferir elegir su administrador de paquetes predeterminado apt-get para instalar el paquete fabric, generalmente 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 sobre cómo puede usar Fabric. Durante el proceso de instalación, se agregó un script de Python llamado fab a un directorio en su ruta. El fabuloso guión 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. ejecutar: ejecuta un comando de shell en una máquina remota.
  2. local: que ejecuta el comando en la máquina local.
  3. sudo - que ejecuta un comando de shell en una máquina remota, con privilegios de root.
  4. Obtener: descarga uno o más archivos de una máquina remota.
  5. Poner: carga uno o más archivos en una máquina remota.

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 podemos 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. Puede ejecutar fab –help para ver información de ayuda y una larga lista de opciones de línea de comandos disponibles.
  2. Una opción importante es –fabfile u003d PATH que le ayuda a especificar un archivo de módulo de Python diferente para importar otro que no sea fabfile.py.
  3. Para especificar un nombre de usuario para usar cuando se conecta a hosts remotos, use la opción –user u003d USER.
  4. Para usar la contraseña para la autenticación y/o sudo, use la opción –password u003d PASSWORD.
  5. Para imprimir información detallada sobre el comando NAME, use la opción –display u003d NAME.
  6. Para ver los formatos, use la opción –list, opciones: corto, normal, anidado, use la opción –list-format u003d FORMAT.
  7. Para imprimir una lista de posibles comandos y salir, incluya la opción –list.
  8. Puede especificar la ubicación del archivo de configuración a utilizar mediante la opción –config u003d PATH.
  9. Para mostrar una salida de error en color, use –colorize-errors.
  10. Para ver el número de versión del programa y salir, use la opción –version.

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 algún error que encuentre durante la instalación y el uso, puede dejar un comentario y encontraremos formas de solucionarlo.

Referencia: documentación de la tela