cuando la cláusula no puede evaluar la presencia de etiquetas. Como solución alternativa, utilizo variables y etiquetas juntas para ejecutar tareas específicas de esa etiqueta / variable.
Ej: imagina un libro de jugadas e inventario
# inventario
[dev]
192.168.1.1
# site.yml
- hosts: dev
roles:
- {rol: común}
y en común / tareas / main.yml
# roles / common / tareas / main.yaml
- nombre: Instalar enlaces
apt: nombre = estado de enlaces = presente
- incluye: uninstall.yml
cuando: uninstall_links está definido
etiquetas:
- desinstalar
# roles / common / tareas / uninstall.yml
- nombre: desinstalar enlaces
apt: nombre = estado de los enlaces = ausente
Con este enfoque, utiliza la etiqueta para seleccionar solo las tareas en uninstall.yml, pero también necesita establecer la variable 'uninstall_links' en algo para habilitarla. Entonces, si ejecuta el libro de jugadas sin ningún parámetro, de forma predeterminada, ejecutará la tarea de instalación. Para desinstalar, puede configurar la etiqueta 'desinstalar' en su libro de jugadas (o cmdline) y DEBE configurar la variable. Si no configura la etiqueta, ejecutará todo (instalar y desinstalar) en ese orden, lo cual es bueno para probar todo el proceso.
Cómo ejecutar todo (se instalará y desinstalará):
PS ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true"
Cómo ejecutar solo la etiqueta 'desinstalar' en el grupo de desarrollo
PS ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true" -t uninstall
Por lo tanto, las variables y las etiquetas también pueden estar en los archivos site.yml / Inventory, lo que le permite comprometerse en su SCM y registrar su intención.