Sobes.tech
Junior

¿De qué consta el rol, qué carpetas y archivos lo componen?

sobes.tech AI

Respuesta de la IA

El rol de Ansible consiste en un conjunto de directorios y archivos que definen tareas, variables, plantillas, archivos, manejadores y metadatos para realizar una función específica en los nodos gestionados.

Estructura principal del directorio del rol:

  • defaults/: Valores predeterminados de variables para el rol.
  • vars/: Variables específicas del rol. Sobrescriben los valores de defaults/.
  • tasks/: Tareas principales que realiza el rol. El archivo main.yml es obligatorio.
  • handlers/: Manejadores que se activan en eventos específicos (por ejemplo, reiniciar un servicio). El archivo main.yml es obligatorio.
  • files/: Archivos que se copiarán a los nodos gestionados.
  • templates/: Archivos de plantillas Jinja2 que se copiarán a los nodos gestionados después de procesarlos.
  • meta/: Información del rol: dependencias, autor, licencia. El archivo main.yml es obligatorio.
  • library/: Módulos personalizados.
  • module_utils/: Utilidades para módulos personalizados.
  • lookup_plugins/: Plugins para búsqueda.
  • filter_plugins/: Plugins para filtros.

Ejemplo de contenido del archivo tasks/main.yml:

# tasks/main.yml
- name: Instalar servidor web Nginx
  ansible.builtin.apt:
    name: nginx
    state: present

- name: Copiar archivo de configuración de Nginx
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify: Reiniciar Nginx

Ejemplo de contenido del archivo handlers/main.yml:

# handlers/main.yml
- name: Reiniciar Nginx
  ansible.builtin.service:
    name: nginx
    state: restarted

Ejemplo de contenido del archivo templates/nginx.conf.j2:

# templates/nginx.conf.j2
server {
    listen {{ http_port }};
    server_name {{ server_name }};

    location / {
        proxy_pass http://localhost:{{ app_port }};
    }
}

Ejemplo de contenido del archivo defaults/main.yml:

# defaults/main.yml
http_port: 80
server_name: localhost
app_port: 8080

El archivo meta/main.yml contiene metadatos del rol:

# meta/main.yml
galaxy_info:
  author: Your Name
  description: Un rol para instalar y configurar Nginx.
  license: MIT

  min_ansible_version: 2.9

  platforms:
  - name: Debian
    versions:
    - all
  - name: Ubuntu
    versions:
    - bionic

  galaxy_tags: []

dependencies: []

Cada directorio, excepto library y module_utils, debe contener un archivo main.yml (o main.yaml), que es el punto de entrada para esa parte del rol.