ketika klausa tidak dapat mengevaluasi keberadaan tag. Sebagai solusinya, saya menggunakan variabel dan tag secara bersamaan untuk menjalankan tugas khusus untuk tag / variabel tersebut.
Contoh: Bayangkan sebuah buku pedoman dan inventaris
# inventaris
[dev]
192.168.1.1
# site.yml
- host: dev
peran:
- {peran: umum}
dan secara umum / task / main.yml
# peran / umum / tugas / main.yaml
- nama: Instal tautan
apt: name = links state = present
- termasuk: uninstall.yml
ketika: uninstall_links didefinisikan
tag:
- uninstall
# peran / umum / tugas / uninstall.yml
- name: Copot tautan
apt: name = tautan status = tidak ada
Dengan pendekatan ini, Anda menggunakan tag untuk hanya memilih tugas di uninstall.yml, tetapi Anda juga perlu mengatur variabel 'uninstall_links' menjadi sesuatu untuk mengaktifkannya. Jadi, jika Anda menjalankan playbook tanpa parameter apa pun, secara default, akan menjalankan tugas instal. Untuk mencopot pemasangan, Anda dapat mengatur tag 'mencopot' ke buku pedoman Anda (atau cmdline) dan HARUS mengatur variabel. Jika Anda tidak menetapkan tag, itu akan menjalankan semuanya (instal dan hapus instalan) dalam urutan itu, yang bagus untuk menguji seluruh proses.
Cara menjalankan semuanya (ini akan menginstal dan menghapus instalan):
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true"
Cara menjalankan hanya tag 'copot pemasangan' pada grup dev
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true" -t uninstall
Karenanya, variabel dan tag juga bisa ada di file site.yml / inventaris, memungkinkan Anda untuk berkomitmen ke dalam SCM Anda dan mencatat niat Anda.