Saya menggunakan Kemungkinan untuk menyediakan server pengembangan saya.
Saya ingin selalu memulai beberapa layanan untuk saya. Saya memiliki penangan untuk tujuan ini, tetapi apa cara terbaik untuk memicu eksekusi penangan tanpa syarat, misalnya membuatnya selalu berfungsi?
Sesuatu seperti ini:
tasks:
- name: Trigger handler
run_handler: name=nginx-restart
Jawaban:
Jika Anda benar-benar perlu memicu penangan setiap kali maka di sini ada dua opsi:
1) jalankan perintah noop shell yang akan selalu dilaporkan telah diubah
2) gunakan debug bersama dengan perubahan_ketika: untuk memicu penangan
Juga perhatikan untuk Opsi 1 dan Periksa Mode: Anda mungkin ingin menggunakan
check_mode: no
jika menggunakan Ansible versi 2.2 atau lebih tinggi ataualways_run: yes
jika menggunakan versi lebih awal dari itu sehingga tugas tidak dilewati dalam mode periksa. Dari pengujian manual saya sepertinya penangan tetap dalam mode periksa, tapi harap hati-hati karena kasus Anda mungkin berbeda.sumber
changed_when
lebih banyak logika di dalamnya untuk mengimplementasikan tugas yang tidak idempoten [yang mungkin dipanggil lebih dari sekali dalam beberapa kasus] sebagai penangan daripada tugas.Ansible menyediakan beberapa opsi untuk memaksa penangan:
1) Untuk selalu memaksa semua penangan, jalankan
ansible-playbook playbook.yml --force-handlers
, seperti yang didokumentasikan di sini: https://github.com/ansible/ansible/issues/47772) Untuk memaksa penangan yang telah diberi tahu pada titik tertentu dalam buku pedoman, Anda dapat menggunakan tugas meta https://docs.ansible.com/playbooks_intro.html :
3) Namun, sepertinya Anda hanya ingin memastikan layanan berjalan atau dimulai kembali, terlepas dari hasil tugas lain. Dalam hal itu, jangan gunakan penangan, gunakan tugas baru yang memanggil
service
modul Ansible : http://docs.ansible.com/service_module.htmlsumber
Memulai kembali layanan adalah satu hal; memastikan itu berjalan adalah hal lain. Jika Anda ingin
ansible
memastikannginx
berjalan, Anda melakukan ini:sumber