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 dedefaults/.tasks/: Tareas principales que realiza el rol. El archivomain.ymles obligatorio.handlers/: Manejadores que se activan en eventos específicos (por ejemplo, reiniciar un servicio). El archivomain.ymles 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 archivomain.ymles 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.