Die when- Klausel kann das Vorhandensein von Tags nicht bewerten. Um dies zu umgehen, verwende ich Variablen und Tags zusammen, um Aufgaben auszuführen, die für dieses Tag / diese Variable spezifisch sind.
Bsp .: Stellen Sie sich ein Spielbuch und ein Inventar vor
# inventar
[dev]
192.168.1.1
# site.yml
- Gastgeber: dev
Rollen:
- {Rolle: gemeinsam}
und gemeinsam / tasks / main.yml
# role / common / tasks / main.yaml
- name: Installiere Links
apt: name = links state = present
- Include: uninstall.yml
wann: uninstall_links ist definiert
Stichworte:
- deinstallieren
# role / common / tasks / uninstall.yml
- name: Links deinstallieren
apt: name = links state = abwesend
Bei diesem Ansatz verwenden Sie das Tag, um nur die Tasks in uninstall.yml auszuwählen. Sie müssen jedoch auch die Variable 'uninstall_links' auf einen Wert setzen, um sie zu aktivieren. Wenn Sie also das Playbook ohne Parameter ausführen, wird standardmäßig die Installationsaufgabe ausgeführt. So deinstallieren, können Sie den Tag ‚uninstall‘ auf Ihrem Textbuch (oder cmdline) festgelegt und muss die Variable gesetzt. Wenn Sie das Tag nicht festlegen, wird alles (installieren und deinstallieren) in dieser Reihenfolge ausgeführt. Dies ist gut, um den gesamten Prozess zu testen.
So führen Sie alles aus (es wird installiert und deinstalliert):
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true"
Wie man nur das 'uninstall'-Tag auf der dev-Gruppe ausführt
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true" -t uninstall
Daher können sich Variablen und Tags auch in den Dateien site.yml / inventory befinden. Auf diese Weise können Sie sich in Ihr SCM einfügen und Ihre Absichten aufzeichnen.