quando la clausola non può valutare la presenza di tag. Per ovviare a questo problema, utilizzo insieme variabili e tag per eseguire attività specifiche di tale tag / variabile.
Esempio: immagina un playbook e un inventario
# inventario
[It]
192.168.1.1
# site.yml
- host: dev
ruoli:
- {ruolo: comune}
e in common / task / main.yml
# ruoli / comuni / attività / main.yaml
- nome: installa collegamenti
apt: name = links state = presente
- include: uninstall.yml
quando: uninstall_links è definito
tags:
- disinstallare
# ruoli / comuni / attività / uninstall.yml
- nome: disinstalla i collegamenti
apt: name = links state = assente
Con questo approccio, si utilizza il tag per selezionare solo le attività in uninstall.yml, ma è anche necessario impostare la variabile 'uninstall_links' su qualcosa per abilitarlo. Quindi, se si esegue il playbook senza parametri, per impostazione predefinita eseguirà l'attività di installazione. Per disinstallare, puoi impostare il tag 'Uninstall' sul tuo playbook (o cmdline) e DEVE impostare la variabile. Se non imposti il tag, eseguirà tutto (installa e disinstalla) in quell'ordine, il che è utile per testare l'intero processo.
Come eseguire tutto (verrà installato e disinstallato):
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true"
Come eseguire solo il tag 'Uninstall' sul gruppo di sviluppo
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true" -t uninstall
Pertanto, variabili e tag potrebbero anche trovarsi nei file site.yml / inventario, consentendo di impegnarsi nel proprio SCM e registrare le proprie intenzioni.