Instalar Ansible en Red Hat Enterprise Linux

AnsibleBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a instalar Ansible Core en un sistema Red Hat Enterprise Linux (RHEL). Ansible es una potente herramienta de automatización que le permite gestionar y configurar sistemas, desplegar aplicaciones y orquestar flujos de trabajo de TI complejos.

Utilizará el gestor de paquetes dnf con privilegios de sudo para instalar el paquete ansible-core, el cual proporciona el motor principal de Ansible y las herramientas de línea de comandos. Tras la instalación, verificará que Ansible funciona correctamente comprobando su versión y ejecutando comandos básicos.

Esta es una habilidad fundamental para administradores de sistemas e ingenieros DevOps que trabajan con sistemas Red Hat Enterprise Linux.

Instalar Ansible Core usando dnf

En este paso, instalará el paquete ansible-core utilizando el gestor de paquetes dnf. Ansible Core proporciona el motor esencial de Ansible, incluyendo ansible, ansible-playbook y otras herramientas de línea de comandos necesarias para tareas de automatización.

El gestor de paquetes dnf (Dandified YUM) es la herramienta estándar para gestionar paquetes de software en Red Hat Enterprise Linux. Dado que la instalación de software requiere privilegios administrativos, debe utilizar el comando sudo.

Ejecute el siguiente comando para instalar Ansible Core con confirmación automática:

sudo dnf install ansible-core -y

El indicador -y responde automáticamente "yes" a todas las solicitudes, haciendo que la instalación no sea interactiva. El sistema descargará e instalará ansible-core junto con sus dependencias de Python, incluyendo Jinja2 para plantillas y PyYAML para el procesamiento de archivos YAML.

Debería ver una salida similar a esta, que muestra la resolución de paquetes y el progreso de la instalación:

Updating Subscription Management repositories.
Last metadata expiration check: ...
Dependencies resolved.
================================================================================
 Package                  Arch   Version                Repository         Size
================================================================================
Installing:
 ansible-core             noarch 2.16.x-x.el9            rhel-9-appstream   xx M
Installing dependencies:
 python3-jinja2           noarch x.x.x-x.el9              rhel-9-appstream   xxx k
 python3-yaml             x86_64 x.x.x-x.el9              rhel-9-appstream   xxx k
 ...

Transaction Summary
================================================================================
Install  XX Packages

Complete!

Verificar la instalación de Ansible

Ahora que ha instalado Ansible Core, verifiquemos que la instalación se realizó correctamente comprobando la versión y confirmando que las herramientas de línea de comandos esenciales están disponibles.

Primero, verifique la versión de Ansible ejecutando:

ansible --version

Este comando muestra información detallada sobre su instalación de Ansible, incluyendo la versión del núcleo, la versión de Python y las ubicaciones de varios componentes. Debería ver una salida como esta:

ansible [core 2.14.18]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /home/labex/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.21 (main, Feb 10 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True

Entendamos qué significa cada línea:

  • ansible [core 2.14.18]: Muestra la versión instalada de Ansible Core.
  • config file: Señala el archivo de configuración principal de Ansible que contiene los ajustes predeterminados.
  • configured module search path: Directorios donde Ansible busca módulos personalizados.
  • ansible python module location: Dónde está instalado el código Python principal de Ansible.
  • ansible collection location: Directorios donde se almacenan las colecciones de Ansible (módulos y complementos empaquetados).
  • executable location: La ubicación real del binario del comando ansible.
  • python version: La versión del intérprete de Python que utiliza Ansible.
  • jinja version: La versión del motor de plantillas utilizado por Ansible para contenido dinámico.
  • libyaml = True: Confirma que el analizador YAML rápido está disponible para un mejor rendimiento.

Esto confirma que Ansible está instalado correctamente y listo para usar. A continuación, verifiquemos también que el comando ansible-playbook esté disponible:

ansible-playbook --version

Debería ver información de versión similar para la herramienta ansible-playbook, la cual es esencial para ejecutar playbooks de Ansible.

Probar Ansible con un comando simple

En este paso, probará su instalación de Ansible ejecutando un comando simple contra el sistema local. Cambie al directorio del proyecto y utilice el archivo de inventario preconfigurado para ejecutar un comando ad-hoc de Ansible.

Navegue al directorio del proyecto y pruebe la funcionalidad básica de ping. Guarde la salida en un archivo para que pueda revisarla nuevamente y para que el verificador del paso pueda confirmar el resultado de manera confiable:

cd /home/labex/project
ansible localhost -m ping | tee ping-output.txt

El módulo ping no envía paquetes ICMP; en su lugar, verifica que Ansible pueda conectarse al objetivo y ejecutar código Python. Una respuesta exitosa se verá así:

localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Analicemos esta salida:

  • localhost | SUCCESS: Muestra que el comando se ejecutó correctamente en el objetivo localhost.
  • ansible_facts: Contiene información del sistema descubierta durante la ejecución.
  • discovered_interpreter_python: La ruta del intérprete de Python que Ansible encontró y utilizará.
  • changed: false: Indica que no se realizaron cambios en el sistema (ping es de solo lectura).
  • ping: "pong": La respuesta clásica que confirma la conectividad de Ansible.

La respuesta "pong" confirma que Ansible funciona correctamente y puede comunicarse con el sistema objetivo.

Probemos también recopilar información del sistema utilizando el módulo setup y guardemos esa salida también:

ansible localhost -m setup -a "filter=ansible_distribution*" | tee setup-output.txt

Este comando utiliza el módulo setup para recopilar hechos del sistema, filtrando específicamente la información de distribución. Debería ver una salida que contenga detalles sobre su sistema Red Hat Enterprise Linux:

localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_distribution": "RedHat",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/redhat-release",
        "ansible_distribution_file_search_string": "Red Hat",
        "ansible_distribution_file_variety": "RedHat",
        "ansible_distribution_major_version": "9",
        "ansible_distribution_release": "Plow",
        "ansible_distribution_version": "9.6",
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false
}

Entendiendo la salida de los hechos del sistema:

  • ansible_distribution: El nombre de la distribución de Linux (RedHat).
  • ansible_distribution_file_parsed: Si Ansible leyó correctamente el archivo de distribución.
  • ansible_distribution_file_path: El archivo que contiene la información de distribución.
  • ansible_distribution_file_search_string: El patrón de texto utilizado para identificar la distribución.
  • ansible_distribution_file_variety: La familia de distribución (familia RedHat).
  • ansible_distribution_major_version: El número de versión principal (9).
  • ansible_distribution_release: El nombre en clave de la versión (Plow).
  • ansible_distribution_version: El número de versión completo (9.6).
  • discovered_interpreter_python: Intérprete de Python descubierto por Ansible.

Esto confirma que Ansible puede recopilar con éxito información del sistema desde el host objetivo, lo cual es esencial para crear automatización condicional basada en las características del sistema.

Explorar los módulos de Ansible disponibles

Ansible viene con cientos de módulos integrados para diversas tareas de automatización. Exploremos algunos de los módulos disponibles para comprender qué capacidades están disponibles inmediatamente después de la instalación.

Para ver una lista de los módulos disponibles, ejecute el siguiente comando y guarde las primeras líneas en un archivo:

ansible-doc -l | head -20 | tee module-list.txt

El comando ansible-doc -l enumera todos los módulos disponibles, y el uso de head -20 muestra los primeros 20 módulos. Esto le da una idea de las amplias capacidades de automatización disponibles con Ansible. Verá una salida similar a:

ansible.builtin.add_host               Add a host (and alternatively a grou...
ansible.builtin.apt                    Manages apt-packages
ansible.builtin.apt_key                Add or remove an apt key
ansible.builtin.apt_repository         Add and remove APT repositories
ansible.builtin.assemble               Assemble configuration files from fr...
ansible.builtin.assert                 Asserts given expressions are true
ansible.builtin.async_status           Obtain status of asynchronous task
ansible.builtin.blockinfile            Insert/update/remove a text block su...
ansible.builtin.command                Execute commands on targets
ansible.builtin.copy                   Copy files to remote locations
ansible.builtin.cron                   Manage cron.d and crontab entries
ansible.builtin.debconf                Configure a .deb package
ansible.builtin.debug                  Print statements during execution
ansible.builtin.dnf                    Manages packages with the `dnf' pack...
ansible.builtin.dpkg_selections        Dpkg package selection selections
ansible.builtin.expect                 Executes a command and responds to p...
ansible.builtin.fail                   Fail with custom message
ansible.builtin.fetch                  Fetch files from remote nodes
ansible.builtin.file                   Manage files and file properties
ansible.builtin.find                   Return a list of files based on spec...

Entendiendo el formato de la lista de módulos:

  • ansible.builtin.: Indica que estos son módulos integrados que vienen con Ansible Core.
  • Nombre del módulo: El nombre que utiliza al llamar al módulo en playbooks o comandos ad-hoc.
  • Descripción: Una breve explicación de lo que hace el módulo.

Algunos módulos importantes que utilizará comúnmente:

  • command: Ejecutar comandos de shell en sistemas objetivo.
  • copy: Copiar archivos desde su máquina de control a hosts remotos.
  • dnf: Instalar, actualizar o eliminar paquetes en sistemas Red Hat.
  • file: Crear directorios, establecer permisos o gestionar propiedades de archivos.
  • debug: Imprimir mensajes durante la ejecución del playbook para la resolución de problemas.

Para obtener documentación detallada de un módulo específico, puede utilizar el comando ansible-doc con el nombre del módulo. Redirija la salida a un archivo para que el comando no sea interactivo y pueda inspeccionarlo más tarde. Por ejemplo, para aprender sobre el módulo copy:

ansible-doc copy | tee copy-doc.txt

Esto mostrará documentación completa para el módulo copy, incluyendo ejemplos y descripciones de parámetros, mientras guarda una copia en copy-doc.txt. El comando ansible-doc proporciona documentación detallada para cualquier módulo de Ansible, lo que facilita aprender a utilizar diferentes capacidades de automatización.

Resumen

En este laboratorio, aprendió con éxito cómo instalar y verificar Ansible Core en un sistema Red Hat Enterprise Linux. Esto es lo que logró:

  1. Instalación de Ansible Core: Utilizó el comando sudo dnf install ansible-core -y para instalar el paquete principal de Ansible y sus dependencias desde los repositorios oficiales de Red Hat.

  2. Verificación de la instalación: Confirmó que Ansible estaba instalado correctamente comprobando la versión de los comandos ansible y ansible-playbook.

  3. Prueba de funcionalidad básica: Ejecutó comandos simples de Ansible para verificar que la instalación funciona correctamente, incluyendo:

    • Uso del módulo ping para probar la conectividad.
    • Uso del módulo setup para recopilar hechos del sistema.
  4. Exploración de módulos disponibles: Aprendió a descubrir y leer la documentación de la extensa biblioteca de módulos de Ansible utilizando ansible-doc.

Ahora tiene una instalación de Ansible completamente funcional en RHEL y comprende los comandos básicos necesarios para comenzar a automatizar su infraestructura. Esta base lo prepara para temas más avanzados de Ansible, como escribir playbooks, gestionar inventarios e implementar flujos de trabajo de automatización complejos.