Instalar Ansible en Red Hat Enterprise Linux

Red Hat Enterprise LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a instalar Ansible Core en un sistema Red Hat Enterprise Linux (RHEL). Ansible es una poderosa 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 sudo para instalar el paquete ansible-core, que proporciona el motor central de Ansible y las herramientas de línea de comandos. Después de la instalación, verificará que Ansible funciona correctamente comprobando su versión y ejecutando comandos básicos.

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

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 82%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

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 fundamentales necesarias para las tareas de automatización.

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 usar el comando sudo.

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

sudo dnf install ansible-core -y

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

Debería ver una salida similar a esta, mostrando 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 fue exitosa comprobando la versión y confirmando que las herramientas esenciales de línea de comandos están disponibles.

Primero, compruebe 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: Apunta al archivo de configuración principal de Ansible que contiene la configuración predeterminada
  • configured module search path: Directorios donde Ansible busca módulos personalizados
  • ansible python module location: Dónde está instalado el código Python central de Ansible
  • ansible collection location: Directorios donde se almacenan las colecciones de Ansible (módulos y plugins empaquetados)
  • executable location: La ubicación real del binario del comando ansible
  • python version: La versión del intérprete de Python que Ansible utiliza
  • 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á correctamente instalado y listo para usar. A continuación, comprobemos 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, que es esencial para ejecutar playbooks de Ansible.

Probar Ansible con un Comando Sencillo

En este paso, probará su instalación de Ansible ejecutando un comando simple contra el sistema local. Cambie al directorio del proyecto y use 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:

cd /home/labex/project
ansible localhost -m ping

El módulo ping en realidad no envía paquetes ICMP; en cambio, 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"
}

Desglosemos esta salida:

  • localhost | SUCCESS: Muestra que el comando se ejecutó con éxito 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 la recopilación de información del sistema utilizando el módulo setup:

ansible localhost -m setup -a "filter=ansible_distribution*"

Este comando utiliza el módulo setup para recopilar datos del sistema, filtrando específicamente la información de la 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 datos del sistema:

  • ansible_distribution: El nombre de la distribución de Linux (RedHat)
  • ansible_distribution_file_parsed: Si Ansible leyó con éxito el archivo de distribución
  • ansible_distribution_file_path: El archivo que contiene la información de la 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 la 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 del 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:

ansible-doc -l | head -20

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 usa 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 usará comúnmente:

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

Para obtener documentación detallada de un módulo específico, puede usar el comando ansible-doc con el nombre del módulo. Por ejemplo, para aprender sobre el módulo copy:

ansible-doc copy

Esto mostrará documentación completa para el módulo copy, incluyendo ejemplos y descripciones de parámetros. El comando ansible-doc proporciona documentación detallada para cualquier módulo de Ansible, lo que facilita el aprendizaje de cómo usar diferentes capacidades de automatización. Presione q para salir del visor de documentación cuando termine de leer.

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: Usó 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 se instaló correctamente verificando 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:

    • Usar el módulo ping para probar la conectividad
    • Usar el módulo setup para recopilar datos del sistema
  4. Exploración de los Módulos Disponibles: Aprendió a descubrir y leer la documentación de la extensa biblioteca de módulos de Ansible usando 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, administrar inventarios e implementar flujos de trabajo de automatización complejos.