Los módulos en Ansible son componentes predefinidos que permiten ejecutar tareas específicas en los servidores gestionados. Cada módulo realiza una función específica, como instalar paquetes, gestionar usuarios, copiar archivos o controlar servicios. Usar módulos facilita la automatización de tareas complejas de manera sencilla y eficiente.
Los módulos son scripts que Ansible ejecuta en los servidores de destino para realizar distintas tareas. Se pueden utilizar directamente en la línea de comandos o dentro de un *playbook*. Ansible incluye una amplia variedad de módulos, clasificados en categorías como administración de paquetes, gestión de archivos, configuración de servicios, operaciones en la nube, etc.
1. Gestión de sistemas: Para gestionar usuarios, grupos, permisos y servicios.
user
, group
, service
2. Gestión de archivos: Copiar, mover, crear y gestionar archivos y directorios.
copy
, file
, template
3. Instalación de paquetes: Para gestionar la instalación y actualización de paquetes.
yum
, apt
, dnf
4. Bases de datos: Para interactuar con bases de datos como MySQL y PostgreSQL.
mysql_db
, postgresql_db
5. Redes y dispositivos: Configuración de routers, switches y equipos de red.
ios_config
, nxos_config
6. Nube y contenedores: Provisión de recursos en la nube y administración de contenedores.
ec2
, docker_container
Los módulos se pueden utilizar de dos formas principales:
ansible
)
Se pueden ejecutar módulos desde la línea de comandos utilizando la herramienta ansible
. Esto es útil para tareas rápidas sin necesidad de un *playbook*. La sintaxis básica es:
ansible nombre_del_host -m nombre_del_módulo -a "opciones"
ping
, user
).
ansible localhost -m ping
Este comando ejecuta el módulo ping
en el host local para verificar la conectividad.
En un *playbook*, los módulos se utilizan dentro de las tareas (tasks
). Un ejemplo de uso es:
- hosts: webservers
become: yes
tasks:
- name: Instalar Apache
apt:
name: apache2
state: present
En este ejemplo, se usa el módulo apt
para instalar el paquete apache2
en todos los servidores del grupo webservers
.
ping
: Probar conectividad
El módulo ping
se usa para verificar si Ansible puede conectarse a los servidores especificados:
ansible all -m ping
Resultado: Retorna pong
si el host es accesible y Ansible tiene los permisos necesarios.
user
: Crear o eliminar usuarios
El módulo user
permite gestionar cuentas de usuario en el servidor:
- name: Crear un nuevo usuario
user:
name: juan
state: present
shell: /bin/bash
Resultado: Crea el usuario juan
con la shell /bin/bash
.
file
: Gestionar archivos y directorios
El módulo file
permite crear, eliminar o cambiar permisos de archivos y carpetas:
- name: Crear un directorio
file:
path: /opt/mi_directorio
state: directory
mode: '0755'
Resultado: Crea el directorio /opt/mi_directorio
con permisos 0755
.
copy
: Copiar archivos
El módulo copy
se usa para copiar archivos desde la máquina de control al servidor de destino:
- name: Copiar un archivo de configuración
copy:
src: ./files/mi_config.conf
dest: /etc/mi_config.conf
owner: root
group: root
mode: '0644'
Resultado: Copia el archivo mi_config.conf
al servidor de destino con los permisos y propietarios especificados.
service
: Gestionar servicios del sistema
El módulo service
permite iniciar, detener o reiniciar servicios en el servidor:
- name: Reiniciar el servicio de Apache
service:
name: apache2
state: restarted
Resultado: Reinicia el servicio apache2
en el host de destino.
1. Verifica la idempotencia: Asegúrate de que el módulo elegido sea idempotente para evitar resultados inesperados.
2. Usa check_mode
: Ejecuta el playbook en modo --check
para verificar los cambios sin aplicarlos.
3. Combina módulos en roles: Organiza los módulos en roles para mejorar la reutilización.
Para más detalles sobre todos los módulos disponibles, consulta la documentación oficial de Ansible.
Jorge García
Fullstack developer