GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar controladores en Ansible Playbook

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 de 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 'notificar' 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:

  • Instalando el servidor web Apache
  • Permitir el tráfico HTTP en el cortafuegos 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 cortafuegos.

Las acciones secundarias ejecutadas por los controladores aquí son:

  • Reinicio de Apache
  • Habilitar y recargar el cortafuegos para que se efectúen los cambios realizados.

Conclusión

Como ha visto, los controladores son como tareas normales, 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énCómo crear roles de Ansible y usarlos en Playbook


Linux
  1. Cómo uso Ansible y Anacron para la automatización

  2. Cómo usar Ansible para configurar el monitoreo del sistema con Prometheus

  3. Cómo instalar y usar Ansible en Debian 11

  4. Cómo crear un libro de jugadas de Ansible

  5. Cómo instalar paquetes de software con un playbook de Ansible

Cómo crear y usar datos personalizados en Ansible

Primeros pasos con los libros de jugadas de Ansible

Cómo definir y usar controladores en Ansible Playbooks

Cómo usar la plantilla Jinja2 en Ansible

Cómo usar Ansible para configurar Vim

Cómo usar Ansible para enviar un correo electrónico usando Gmail