Volver a la página principal
lunes 7 octubre 2024
16

Cómo usar Módulos en Ansible

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.

¿Qué son los Módulos en Ansible?

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.

Principales categorías de módulos

1. Gestión de sistemas: Para gestionar usuarios, grupos, permisos y servicios.

  • Ejemplos: user, group, service

2. Gestión de archivos: Copiar, mover, crear y gestionar archivos y directorios.

  • Ejemplos: copy, file, template

3. Instalación de paquetes: Para gestionar la instalación y actualización de paquetes.

  • Ejemplos: yum, apt, dnf

4. Bases de datos: Para interactuar con bases de datos como MySQL y PostgreSQL.

  • Ejemplos: mysql_db, postgresql_db

5. Redes y dispositivos: Configuración de routers, switches y equipos de red.

  • Ejemplos: ios_config, nxos_config

6. Nube y contenedores: Provisión de recursos en la nube y administración de contenedores.

  • Ejemplos: ec2, docker_container

¿Cómo se utilizan los Módulos en Ansible?

Los módulos se pueden utilizar de dos formas principales:

1. Uso directo en la línea de comandos (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"
  • nombre_del_host: Puede ser un host individual o un grupo de hosts.
  • nombre_del_módulo: Es el nombre del módulo que se va a ejecutar (por ejemplo, ping, user).
  • opciones: Parámetros específicos que se pasarán al módulo.

Ejemplo en línea de comandos:

ansible localhost -m ping

Este comando ejecuta el módulo ping en el host local para verificar la conectividad.

2. Uso dentro de un Playbook

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.

Ejemplos de Módulos Comunes en Ansible

1. Módulo 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.

2. Módulo 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.

3. Módulo 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.

4. Módulo 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.

5. Módulo 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.

Ventajas de usar Módulos en Ansible

  • Idempotencia: Los módulos están diseñados para ser *idempotentes*, lo que significa que si una tarea ya se ha realizado, no se volverá a ejecutar.
  • Simplicidad: Permiten realizar tareas complejas de forma sencilla.
  • Flexibilidad: Ansible incluye una amplia gama de módulos para casi cualquier tarea.
  • Extensibilidad: Puedes crear módulos personalizados para casos específicos.

Recomendaciones para usar Módulos en Ansible

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.

Referencia oficial

Para más detalles sobre todos los módulos disponibles, consulta la documentación oficial de Ansible.

Etiquetas:
ansible
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer