Cómo usar etiquetas en Ansible

Como Usar Etiquetas En Ansible



Los juegos, roles y tareas son la estructura ansible y esta estructura ansible contiene el atributo importante que se llama etiquetas en Ansible. Cada vez que lanzamos un libro de jugadas en Ansible, puede emplear los comandos -tags y -skip tags para que podamos ejecutar solo una serie particular de tareas, juegos y roles. Si tenemos un libro de jugadas que contiene tantas tareas, pero no queremos ejecutar todas las tareas del libro de jugadas, en lugar de ejecutar todo el libro de jugadas, solo ejecutaremos algunas tareas usando el comando de etiqueta en el libro de jugadas de Ansible.

Vamos a discutir las etiquetas en este tema, que sirven como una de las facetas más importantes de Ansible. Intentaremos explicar qué son las etiquetas y cómo funcionan las etiquetas en Ansible porque esta es una característica desconcertante de la plataforma Ansible.







Por ejemplo, un playbook puede contener tres responsabilidades: instalar el módulo, configurarlo y verificar el estado del módulo implementado, como si el servicio se está ejecutando y es accesible. Dado que simplemente necesitamos ver el estado de los módulos en algunas máquinas remotas, utilizamos etiquetas de Ansible en esta situación en lugar de ejecutar todas las tareas del libro de jugadas. Nos permite ejecutar una determinada operación exclusivamente, lo que nos permite reducir el tiempo de ejecución al mantener todas las actividades relacionadas en un solo libro de jugadas.



Requisitos previos para utilizar las etiquetas en Ansible Playbook

Para poner los ejemplos prácticos en el software ansible, debemos cumplir con los siguientes requisitos.



Se debe requerir un servidor de control Ansible para que realice cambios. Para utilizar el parámetro de etiqueta en el software Ansible, necesitamos que los hosts locales se comuniquen con ellos. En este caso, estamos utilizando el host local a lo largo de la ejecución como servidor remoto de destino. Crearemos libros de jugadas, ejecutaremos comandos de etiquetas de Ansible y monitorearemos los resultados en hosts remotos desde el dispositivo controlador de ansible.





Intentaremos emplear diferentes escenarios para examinar algunas de las etiquetas de Ansible para que el alumno pueda comprender fácilmente el concepto de etiquetas en un libro de jugadas de Ansible.

Ejemplo 01: Acceso a una sola tarea en Ansible Playbook

Vamos a implementar en Ansible al proporcionar múltiples tareas en el libro de jugadas y luego accederemos a una sola tarea utilizando las etiquetas que contiene. Para hacerlo, crearemos primero el libro de jugadas escribiendo el siguiente comando:



[root@master ansible]# nano ansible_tags.yml

Después de crear y ejecutar el libro de jugadas ansible_tags.yml. Ahora comenzaremos a escribir los comandos en el libro de jugadas. Primero, pasaremos los hosts proporcionados en el parámetro 'hosts' que usaremos 'localhost'. Luego, escribiremos el valor 'falso' en el parámetro 'reunir_hechos' para que no podamos obtener información adicional sobre el servidor local cuando ejecutemos el libro de jugadas.

Después de eso, comenzaremos a enumerar las actividades bajo el parámetro 'tareas' una por una que queremos ejecutar. Determinaremos si el documento está allí en la máquina localhost en el primer proceso. Si está disponible, lo almacenaremos en el parámetro 'registro' y luego le daremos el nombre único a la etiqueta para que cuando ejecutemos el libro de jugadas, nos sea fácil acceder a la etiqueta. En la segunda tarea, haremos lo mismo que hicimos en la primera tarea, pero la etiqueta debe ser única y luego usaremos la opción de depuración para mostrar la tarea junto con el mensaje relacionado.

- Hospedadores:

- servidor local
reunir_hechos: falso


tareas:
- nombre: comprobar la existencia del archivo x`
estadística: ruta=./host.yml
registro: archivoExiste
etiquetas: comprobar_archivo


- depurar:
msg: '{{ 'El archivo existe' si fileExists.stat.exists else 'Archivo no encontrado' }}'
etiquetas: comprobar_archivo


- nombre: compruebe si el usuario actual puede acceder a host.yml
shell: stat -c '%a' ./host.yml
registro: ruta de acceso
etiquetas: check_access


- depurar:
msg: '{{ 'Archivo accesible' si (accessPath.stdout|int) < 660 else 'Archivo no accesible' }}'
etiquetas: check_access

Ahora, guardaremos el libro de jugadas y luego lo cerraremos. Queremos ejecutar el libro de jugadas ansible_tags.yml, por lo que escribiremos el siguiente comando en el terminal de Ansible para mostrar el resultado a los usuarios.

[root@master ansible]# ansible-playbook ansible_tags.yml –tags check_file

Después de ejecutar el comando anterior, obtendremos el resultado deseado a cambio. Como se muestra a continuación, solo se ejecuta una tarea y se muestra en la salida, que es 'verificar la existencia del archivo'.

Ejemplo 02: Ignorar etiqueta particular en Ansible Playbook

Aquí está el segundo ejemplo de la etiqueta Ansible donde vamos a la etiqueta 'saltar'. Depende de usted si desea ignorar todas las tareas o si desea ignorar una tarea particular del libro de jugadas en Ansible. Estamos utilizando la implementación del ejemplo 1 y luego omitiremos la tarea simplemente escribiendo la siguiente declaración en la terminal de Ansible.

[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_file

Desde el comando anterior, simplemente hemos ignorado la tarea 'verificar la existencia del archivo'. Ahora, solo se muestra una tarea en la salida que es 'archivo accesible' en fuente verde.

Ejemplo 03: siempre siga ejecutando la tarea en Ansible Playbook

Vamos a implementar el tercer ejemplo basado en la etiqueta Ansible. En este ejemplo, usaremos la etiqueta 'siempre', lo que significa que una etiqueta en particular siempre se ejecutará en Ansible Playbook. Para iniciar el libro de jugadas, use el siguiente comando:

[root@master ansible]# nano ansible_tags.yml

En el libro de jugadas, hemos creado varias tareas para ejecutar, pero pasamos la etiqueta 'siempre' en la última tarea, que es 'eliminar la contraseña del inventario'. Los siguientes son los comandos implementados en el libro de jugadas:

- anfitriones: todos

reunir_hechos: falso


tareas:
- nombre: comprobar la existencia del archivo
estadística: ruta=./host.yml
registro: archivoExiste
delegado_a: localhost
etiquetas: comprobar_archivo


- depurar:
msg: '{{ 'El archivo existe' si fileExists.stat.exists else 'Archivo no encontrado' }}'
etiquetas: comprobar_archivo


- nombre: compruebe si el usuario actual puede acceder a host.yml
shell: stat -c '%a' ./host.yml
registro: ruta de acceso
delegado_a: localhost
etiquetas: check_access


- depurar:
msg: '{{ 'Archivo accesible' si (accessPath.stdout|int) < 660 else 'Archivo no accesible' }}'
etiquetas: check_access


- nombre: Eliminar contraseña del inventario
línea en archivo:
ruta: '{{archivo_de_inventario}}'
expresión regular: '\b{{elemento}}.*\b'
estado: ausente
delegado_a: localhost
convertirse en: falso
etiquetas: siempre
con_elementos:
- ansible_contraseña

Después de eso, crearemos el archivo de inventario para establecer la conexión entre el controlador y el host remoto de destino. A continuación se muestra el comando:

[raíz@maestro ansible]# nano host.yml

Aquí está el archivo de inventario que contiene la información relacionada con 'Linux_host' en Ansible.

Todo:

Hospedadores:
host_linux:
host_ansible: 192.168.3.229
usuario_ansible: ansible
ansible_contraseña: ******
conexión_ansible: ssh
puerto_ansible: 22

Para obtener el resultado deseado, ejecutaremos el siguiente comando en la terminal de Ansible:

[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml

Conclusión

Las etiquetas en Ansible se han explicado en este artículo. Ahora entendemos la función de las etiquetas y los lugares en Ansible donde las aplicaremos. Para ayudar al alumno a comprender y captar el concepto de etiquetas de Ansible, hemos desarrollado una variedad de ejemplos.