GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar etiquetas en Ansible Playbook (ejemplos)

A veces, es posible que desee ejecutar tareas específicas en lugar de ejecutar un archivo de libro de jugadas completo. Esto ayuda a reducir el tiempo total de ejecución del libro de jugadas, especialmente cuando se trata de un archivo de libro de jugadas grande.

Entonces, ¿qué son las etiquetas?

Las etiquetas en los libros de jugadas son piezas de metadatos que se adjuntan a las tareas en un archivo de libro de jugadas. Se hace referencia a ellos cuando se ejecutan libros de jugadas y le permiten apuntar selectivamente a ciertas tareas en tiempo de ejecución. Básicamente, le indica a Ansible que ejecute (o no ejecute) tareas específicas dentro del archivo del libro de jugadas.

Por lo general, las tareas que se omiten se han llevado a cabo y, por lo tanto, no es necesario volver a realizarlas. De esta forma, las etiquetas evitan la repetición y optimizan el tiempo de ejecución del playbook. Son útiles cuando desea ejecutar ciertas tareas bajo demanda.

En esta guía, profundizaremos en las etiquetas de Ansible y demostraremos cómo puede adjuntar etiquetas a las tareas para determinar la ejecución del libro de jugadas.

Ejecutar una tarea específica en un libro de jugadas

Tomemos un ejemplo de un archivo de libro de jugadas que ejecuta tres tareas como se muestra. Las etiquetas se especifican utilizando la etiqueta de etiquetas al final de cada tarea.

---
- name: Ansible Tags example
  hosts: localhost
  gather_facts: False
  tasks:
    - name: Hello World tag example
      debug:
        msg: "Hello World!"
      tags:
        - hello

    - name: Welcome to Ansible Tags tag example
      debug:
        msg: "How are you?"
      tags:
        - welcome

    - name: Enjoy tag example
      debug:
        msg: "Enjoy!"
      tags:
        - enjoy

En este libro de jugadas, tenemos tres etiquetas:hola, bienvenido y disfrute.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --list-tags

Como se mencionó anteriormente, puede usar etiquetas para controlar la ejecución de los libros de jugadas de Ansible. Para especificar qué tarea ejecutar, use el indicador -t o –tags.

En el siguiente comando, le indicamos a Ansible que ejecute solo la primera tarea que se ha etiquetado como hola.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --tags hello

Omitir etiquetas específicas en un Playbook

También puede indicarle a Ansible que omita etiquetas específicas usando el indicador –skip-tags. Al hacerlo, Ansible ejecutará el resto de las tareas en el archivo Playbook con la excepción de la tarea provista.

En este ejemplo, Ansible ignora la última tarea etiquetada como disfrutar y ejecuta el resto de las tareas definidas en el libro de jugadas.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --skip-tags enjoy

Asegúrese de que una tarea siempre (o nunca) se ejecute

Incluso cuando usa etiquetas para determinar qué tareas se ejecutarán en un archivo de libro de jugadas, a veces, encuentra que hay tareas que necesita ejecutar. Tomemos, por ejemplo, un libro de jugadas que instala Apache en el servidor web remoto.

El libro de jugadas tiene 3 tareas. Primero actualiza las listas de paquetes en el host remoto, instala Apache y lo reinicia. Sin embargo, antes de instalar Apache, es necesario actualizar las listas de paquetes o actualizar los repositorios.

Dado que actualizar los repositorios es un requisito previo, etiquetaremos esta tarea con la etiqueta siempre.

---
- name: install Apache webserver
  hosts: webserver
  tasks:
    - name: Update and upgrade apt packages
      apt:
        update_cache: yes
      tags:
        - always

    - name: install Apache on Ubuntu
      apt:
        name: apache2
        state: latest
      tags:
        - install_apache

    - name: Restart Apache Webserver
      service:
        name: apache2
        state: restarted
      tags:
        - restart_apache

Sin ninguna etiqueta, el libro de jugadas se ejecuta como se esperaba.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml

Si especificamos ejecutar una tarea específica distinta a la que es obligatoria (que en este caso es la primera tarea) Ansible también ejecutará la tarea que lleva la etiqueta 'siempre'.

En este ejemplo, le indicamos a Ansible que reinicie Apache, que lleva la etiqueta "restart_apache". Sin embargo, la tarea 'actualizar repositorio apt' aún se ejecuta ya que tiene la etiqueta 'siempre'.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache

De la misma manera, puede decirle a Ansible que nunca ejecute una tarea, y para esto, usamos la etiqueta 'nunca'. Esto es exactamente lo contrario de la etiqueta "siempre".

Volvamos a nuestro libro de jugadas. Suponga que no desea reiniciar Apache después de la instalación. Para lograr esto, simplemente pase la etiqueta nunca como se muestra.

- name: Restart Apache Webserver
  service:
    name: apache2
    state: restarted
  tags:
    - restart_apache
    - never

Esto también se puede etiquetar de la siguiente manera usando corchetes dobles:

  tags: [ restart_apache, never ]

Cuando el libro de jugadas se ejecuta sin ninguna etiqueta, se omitirá la tarea.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml

En el resultado, puede ver que se ha omitido la tarea de reinicio de apache.

NOTA:

Una tarea etiquetada como 'nunca' aún se ejecutará cuando se la llame explícitamente en el comando ansible-playbook. Por ejemplo, la tarea que reinicia Apache aún se ejecutará ya que se definió explícitamente en el comando.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache

Concluyendo

Las etiquetas de Ansible son útiles y brindan la flexibilidad necesaria para ejecutar playbooks de Ansible. Puede ejecutar u omitir la ejecución de tareas específicas en un libro de jugadas. Esto proporciona un mejor control de sus libros de jugadas durante el tiempo de ejecución del libro de jugadas.

Lea también :Cómo usar Ansible Vault para proteger datos confidenciales


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

  2. Cómo usar el comando IP en Linux con ejemplos

  3. Cómo usar el comando ethtool con ejemplos

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

  5. Cómo pasar variables adicionales a un libro de jugadas de Ansible

Cómo usar el comando Grep en Linux + Ejemplos útiles de Grep

Cómo usar el comando Dig en Linux (10 ejemplos)

Cómo usar el comando rm de Linux con ejemplos

Cómo definir y usar controladores en Ansible Playbooks

Cómo usar Ansible para configurar Vim

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