¿Cómo llamar a los roles en un playbook de Ansible?
sobes.tech AI
Respuesta de la IA
Los roles en Ansible se pueden invocar de varias maneras dentro de un playbook.
-
Uso de la palabra clave
rolesa nivel de playbook:# playbooks/my_playbook.yml - name: Aplicar roles a los servidores hosts: webservers become: yes roles: - role: common # Invoca el role 'common' - role: nginx # Invoca el role 'nginx' vars: # Pasa variables al role nginx_port: 8080 - another_role # Forma abreviada de invocarEste método se usa para invocar roles que se ejecutarán secuencialmente en todos los hosts definidos en la sección
hosts. -
Uso del módulo
include_roleen la lista de tareas:# playbooks/my_playbook.yml - name: Aplicar roles con condiciones hosts: appservers tasks: - name: Incluir el role de base de datos (solo para dev) include_role: name: database when: env == 'dev' # Invoca el role condicionalmente - name: Incluir el role de la aplicación include_role: name: app vars: app_version: 1.2.0 # Pasa variables al roleEl módulo
include_roleejecuta el role como si fuera una lista de tareas incluida en el play actual. Permite usar condiciones (when) y bucles (loop) para controlar la ejecución del role. -
Uso del módulo
import_roleen la lista de tareas:# playbooks/my_playbook.yml - name: Importar el role de la aplicación hosts: appservers tasks: - name: Importar el role de la aplicación para todos los hosts import_role: name: app vars: app_config_file: /etc/app/config.conf # Pasa variablesEl módulo
import_rolese procesa en la fase de análisis del playbook, antes de su ejecución real. Esto significa que todas las directivas, comowhen, se aplicarán a todas las tareas dentro del role, no solo a la invocación del role. Las variables pasadas mediantevarsestarán disponibles dentro del role.
La diferencia clave entre include_role y import_role radica en el momento de procesamiento: import_role se procesa de forma estática en la fase de análisis, mientras que include_role se procesa dinámicamente durante la ejecución del playbook. Esto afecta la capacidad de usar condiciones y bucles:
| Función | include_role |
import_role |
|---|---|---|
| Procesamiento | Dinámico | Estático |
Uso de when para invocar |
Sí | No |
Uso de loop para invocar |
Sí | No |
| Capacidad de usar variables definidas previamente en el play | Sí | No |
La elección entre estos métodos depende de la flexibilidad requerida y del momento de procesamiento. Para incluir roles de forma sencilla, generalmente basta con la palabra clave roles o import_role. Para escenarios más complejos con condiciones y bucles, se usa include_role.