Guía de inicio rápido de Ansible para administradores de sistemas Linux

En este artículo, analizo los requisitos previos para instalar Ansible, instalar Ansible con Satellite Server, configurar Ansible para la automatización, presentar libros de jugadas, archivos de inventario y revisar un caso de uso de Ansible. Consulte el primer artículo, Desmitificación de Ansible para administradores de sistemas Linux, si aún no lo ha hecho.

Índice

Requisitos previos para instalar Ansible

Para usar Ansible en su entorno, debe configurar un (también conocido como) donde instalará Ansible. Puede instalar Ansible en cualquier máquina con Python 2 (versión 2.7) o Python 3 (versiones 3.5 y superiores). Con RHEL 7 tenemos Python 2.7 instalado de forma predeterminada y con RHEL 8 tenemos Python 3.6 de forma predeterminada. Para usar todos los módulos de Ansible, también debe instalar Python en los nodos administrados. De forma predeterminada, Ansible usa SSH para comunicarse con los nodos administrados. Los nodos administrados también pueden usar SFTP o SCP para la comunicación, y esto se puede cambiar en el archivo de configuración de Ansible (ansible.cfg).

Si utiliza RHEL Satellite para instalar Ansible en un sistema RHEL 8, asegúrese de agregar los repositorios de Red Hat Ansible Engine 2.9 para RHEL 8 x86_64 (RPM) desde la GUI de Satellite y sincronice los repositorios de CDN con Satellite. En el nodo de control, debe registrarse con el servidor de Satellite, activar las herramientas de Satellite y activar el repositorio de Ansible con los siguientes comandos:

# subscription-manager repos --enable satellite-tools-6.6-for-rhel-8-x86_64-rpms
Repository' satellite-tools-6.6-for-rhel-8-x86_64-rpms' is enabled for this system.

# subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms
Repository' ansible-2.9-for-rhel-8-x86_64-rpms' is enabled for this system.

Instalar Ansible en RHEL

Para instalar Ansible en el nodo de control de RHEL 8 después de registrarse con el servidor Satellite, ejecute el comando yum install ansible. Este comando instala seis paquetes:

  1. Instale Ansible desde el repositorio de Ansible:
    1. Ansible
  2. Instalar dependencias:
    1. sshpass
    2. Python3-markupsafe
    3. Python3-jinja2
    4. Python3-babel
  3. Instale una dependencia débil:
    1. Python3-jmespath

Después de la instalación, ejecute el ansible --version Comando para verificar la versión de Ansible instalada.

# ansible --version

ansible 2.9.6

 config file = /etc/ansible/ansible.cfg

 configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']

 ansible python module location = /usr/local/lib/python3.6/site-packages/ansible-2.9.6-py3.6.egg/ansible

 executable location = /usr/local/bin/ansible

 python version = 3.6.8 (default, Oct 11 2019, 15:04:54) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]

Después de la instalación, puede realizar cambios en la configuración predeterminada de Ansible cambiando la configuración en el ansible.cfg archivar.

Configuración de Ansible para la automatización

Ahora que Ansible está instalado, debe configurar la autenticación basada en clave SSH (que usa criptografía asimétrica) desde el nodo de control hasta los nodos administrados para que Ansible funcione de manera transparente. Deberá generar un par de claves en su nodo de control y transferir la clave pública a los nodos administrados. Usa el comando ssh-keygen para generar el par de claves. Las claves se almacenan en su directorio personal dentro del .ssh carpetas. Las claves predeterminadas se nombran id_rsa.pub (clave pública) y id_rsa (Llave privada). Para habilitar la autenticación de clave SSH en los nodos administrados, ejecute el siguiente comando en su nodo de control:

# ssh-copy-id <target user>@<IP address/Hostname of the managed node>

Tenga en cuenta que esto requerirá una contraseña de un solo uso para el usuario de destino en el nodo administrado. El comando ssh-copy-id copiará la clave pública del nodo de control al authorized_keys en nodos gestionados.

Una vez configurado, puede agregar nodos remotos a un archivo de inventario y realizar una prueba de ping con el siguiente comando ad-hoc de Ansible:

# ansible all -m ping -i <inventory-file>

Obtenga más información sobre los libros de jugadas

Los playbooks son los archivos en los que se escriben las funciones de Ansible. Los libros de jugadas están escritos en formato YAML. YAML significa otro lenguaje de marcas. Los libros de jugadas son una de las características principales de Ansible y le dicen a Ansible qué hacer. Parecen una lista de tareas para Ansible que contiene una serie de tareas. Los playbooks son los componentes básicos de todos los casos de uso de Ansible. Puede crear playbooks de Ansible modulares independientes para cada acción. Puede integrar estos libros de jugadas modulares en un solo libro de jugadas maestro usando el módulo import_playbook. Esto asegura la reutilización de los libros de jugadas. Puede usar variables en el libro de jugadas y pasar esas variables desde el inventario de Ansible, los archivos incluidos y en tiempo de ejecución. Algunas de las características principales de un libro de jugadas de Ansible incluyen:

  • Habilidad para realizar tareas como diferentes usuarios dependiendo de volverse método
  • Controle dónde ejecutar cada tarea en función de los hosts de su inventario
  • Especifique condiciones y bucles en su código

Ejemplo:

Un ejemplo de un libro de jugadas de Ansible

Más información sobre el inventario

es la lista de nodos que Ansible puede administrar. Puede especificar hosts administrados individuales o crear un grupo de hosts en el archivo de inventario. Para cada host administrado, puede asignar variables que el libro de jugadas puede usar al realizar tareas en ese host en particular. El archivo de inventario predeterminado es /etc/ansible/hosts, pero se recomienda que cree su propio archivo de inventario y lo llame mientras se ejecuta el libro de jugadas usando el -i opción de comando. Los archivos de inventario pueden estar en formato INI o YAML. Puede administrar un archivo de inventario estático o una lista dinámica de hosts.

Ejemplo:

# cat hosts-b2b

[webservers]
b2bwebprod1 urlpath=https://b2bprod.abc.xyz
b2bwebprod2
b2bwebprod3

[appservers]
b2bappprod1
b2bappprod2
b2bappprod3
b2bappprod4
b2bappprod5

[dbservers]
b2bmasterdb
b2bslavedb

Caso de uso de Ansible

Exploremos un caso de uso de Ansible para el monitoreo del sistema. Podemos crear libros de jugadas para varias tareas de monitoreo relacionadas con la administración del sistema, que incluyen:

  • Monitoreo del uso del sistema de archivos y alerta por correo electrónico si el espacio en disco se usa más del 90%
  • Disponibilidad de aplicaciones y puertos
  • Disponibilidad de la base de datos conectando y consultando la base de datos
  • Disponibilidad de URL usando el uri módulo y alertas por correo electrónico si el código de retorno es superior a 200. También puede utilizar las funciones de reclamación y retraso en el uri módulo para estar doblemente seguro
  • Disponibilidad del servicio, informe si el servicio está caído e intente reiniciarlo
  • Verifique las versiones de los componentes para mantener un inventario actualizado
  • Supervise la disponibilidad del sistema y envíe una alerta por correo electrónico si no se puede acceder a un sistema

Conclusión

Este artículo le brinda una descripción general de la instalación de Ansible, la configuración de Ansible, la creación de libros de jugadas y la administración del inventario con ejemplos. Estén atentos para obtener más artículos sobre la automatización con Ansible.

Artículos de interés

Subir