En Ansible, un controlador es como cualquier otra tarea, pero solo se ejecuta cuando se le llama o se le notifica. Actúa cuando se ha realizado un cambio en el host gestionado. Los controladores se utilizan para iniciar un cambio secundario, como iniciar o reiniciar un servicio después de la instalación o incluso volver a cargar un servicio después de que se hayan realizado algunas modificaciones en los archivos de configuración. En esta guía, arrojaremos más luz sobre los controladores de Ansible. Aprenderemos a usar controladores en el libro de jugadas ansible.
Archivo de libro de jugadas de Ansible con un controlador
Para comprender mejor cómo funcionan los controladores, tomaremos un ejemplo de un archivo de libro de jugadas, install_apache.yml, que instala el servidor web Apache y luego reinicia el servicio Apache. En el siguiente ejemplo, se notifica al controlador que reinicie el servicio Apache poco después de la instalación. Esto se logra usando el módulo de notificación como se muestra. Tenga en cuenta que el nombre de ‘notificación’ debe coincidir con el nombre del controlador como se indica; de lo contrario, encontrará errores en su archivo de libro de jugadas.
--- - hosts: staging name: Install become: yes tasks: - name: Install Apache2 on Ubuntu server apt: name: apache2 state: present update_cache: yes notify: - Restart apache2 handlers: - name: Restart apache2 service: name: apache2 state: restarted
Ahora ejecutemos el archivo del libro de jugadas.
$ ansible-playbook /etc/ansible/install_apache.yml -K
Desde la salida, puede ver que el controlador se ejecuta justo después de la tarea.
Múltiples tareas con múltiples controladores
Además, podemos tener varias tareas llamando a múltiples controladores. Considere el archivo del libro de jugadas a continuación.
Aquí hay 2 tareas para ejecutar:
- Instalación del servidor web Apache
- Permitir el tráfico HTTP en el firewall UFW.
Después de que las tareas se ejecutaron con éxito, llamé a cada uno de los controladores con el módulo ‘notificar’ como se muestra a continuación. El primer controlador reinicia Apache y el segundo recarga el firewall UFW.
--- - hosts: staging name: Install become: yes tasks: - name: Install Apache2 on Ubuntu server apt: name: apache2 state: present update_cache: yes - name: Allow HTTP traffic on UFW firewall ufw: rule: allow port: http proto: tcp notify: - Restart apache2 - Reload ufw firewall handlers: - name: Restart apache2 service: name: apache2 state: restarted - name: Reload ufw firewall ufw: state: enabled
Cuando se ejecuta el archivo del libro de jugadas, Ansible ejecuta ambos controladores justo después de que se instala Apache y se permite el tráfico HTTP en el firewall.
Las acciones secundarias ejecutadas por los controladores aquí son:
- Reiniciando Apache
- Habilitación y recarga del firewall para que se efectúen los cambios realizados.
Conclusión
Como ha visto, los controladores son como tareas regulares, solo que se les hace referencia mediante un módulo global único llamado ‘notificar’. Si no se notifica a un controlador, no se ejecuta. Recuerde que todos los controladores se ejecutan después de que se hayan completado todas las tareas.
Leer también : Cómo crear roles de Ansible y usarlos en Playbook