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ó:
Instalación de Ansible Core: Utilizó el comando
sudo dnf install ansible-core -ypara instalar el paquete principal de Ansible y sus dependencias desde los repositorios oficiales de Red Hat.Verificación de la instalación: Confirmó que Ansible estaba instalado correctamente comprobando la versión de los comandos
ansibleyansible-playbook.Prueba de funcionalidad básica: Ejecutó comandos simples de Ansible para verificar que la instalación funciona correctamente, incluyendo:
- Uso del módulo
pingpara probar la conectividad. - Uso del módulo
setuppara recopilar hechos del sistema.
- Uso del módulo
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.


