Ansible: Bagaimana Cara Menyegarkan Inventaris Host saat Runtime dan Menambahkan Jeda saat Menjalankan Playbook?
Diterbitkan: 2022-02-14 Di Crunchify, kami telah menerbitkan begitu banyak tutorial tentang Ansible dan yang satu ini akan fokus pada How to Refresh Host Inventory
saat Runtime dan Add a Pause
saat Menjalankan Tugas.
Mari pertimbangkan skenario pembuatan VM Amazon EC2 sederhana ini:
- Anda menjalankan skrip Amazon EC2 Ansible yang memunculkan VM dan Anda secara dinamis menangkap IP Publik dalam skrip.
- Selama eksekusi – Anda menambahkan IP Publik VM itu ke file
hosts
di bawah grup[crunchify]
. - Dalam tugas selanjutnya, gunakan IP Publik yang baru ditambahkan yang ditambahkan ke file host dan instal Java di dalamnya.
- Jika Anda tidak menggunakan
refresh_inventory
maka itu tidak akan mengambil IP yang baru ditambahkan dan Anda akan melihat kegagalan yang sama seperti di bawah ini.
1 2 |
PLAY [ crunchify ] ************************************* skipping : no hosts matched |
Selain itu, apakah Anda memiliki pertanyaan di bawah ini?
- Cara Memuat Ulang
dynamic inventory
Ansible - Langkah penyegaran inventaris dinamis yang memungkinkan
- Bisakah saya memperbarui inventaris host dan menggunakan host baru di
same playbook
? - Ansible Dynamic Inventory gagal mendapatkan informasi EC2 terbaru – mengapa?
Mari kita mulai:
Langkah 1
Ikuti sepenuhnya tutorial tentang cara spawn Amazon EC2 VM instance remotely using Ansible
?
Bagaimana Cara Membuat, Memulai, dan Mengonfigurasi instans Amazon EC2 menggunakan Ansible Script sederhana? (memunculkan VM dari jarak jauh)
Langkah 2
Cari tugas di bawah ini dalam file crunchify-ec2.yml
.
1 2 3 4 5 6 |
- name : Add the newly created EC2 instance ( s ) to the local host group local_action : lineinfile path = hosts regexp = { { item . public_ip } } insertafter = "[crunchify]" line = { { item . public_ip } } with_items : '{{ec2_crunchify.instances}}' |
Seperti yang Anda lihat di sini, setelah membuat Amazon EC2 VM
, kami menangkap IP publik VM dan menyimpannya ke dalam file hosts
Jika Anda memiliki beberapa tugas tambahan dalam .yml file
yang sama, maka IP tidak akan dimuat secara otomatis. Cukup tambahkan baris di bawah ini ke Ansible Playbook Anda dan itu akan secara otomatis menyegarkan semua daftar inventaris Anda.
1 |
- meta : refresh_inventory |
Cara yang sama jika Anda ingin menambahkan tunggu cukup tambahkan baris di bawah ini:
1 2 |
- pause : minutes : 1 |
Tag di atas akan memperkenalkan satu menit menunggu lama untuk buku pedoman Ansible Anda.
Playbook yang Mungkin Diperbarui untuk Amazon EC2 dengan Tunggu dan Meta Refresh
Ini adalah contoh pengujian saya Ansible Playbook:
Nama file: crunchify-refresh-hostfile-pause-1min.yml
1 2 3 4 5 6 7 8 9 10 11 |
--- - name : Refresh Host Inventory at Runtime and Add a Pause while Executing Playbook hosts : local connection : local gather_facts : True tasks : - meta : refresh_inventory - pause : minutes : 1 |
Keluaran:
Jalankan kembali Ansible Playbook Anda dan Anda akan melihat hasil yang berhasil seperti di bawah ini.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
bash - 3.2 $ ansible - playbook - vvv - i . / hosts crunchify - refresh - hostfile - pause - 1min.yml config file = None configured module search path = [ u '/Users/crunchify/.ansible/plugins/modules' , u '/usr/share/ansible/plugins/modules' ] ansible python module location = / Library / Python / 2.7 / site - packages / ansible executable location = / usr / local / bin / ansible - playbook python version = 2.7.16 ( default , Jul 14 2019 , 03 : 47 : 49 ) [ GCC 4.2.1 Compatible Apple LLVM 11.0.0 ( clang - 1100.0.32.4 ) ( - macos10 . 15 - objc - s No config file found ; using defaults / Users / crunchify / Documents / ansible / hosts did not meet host_list requirements , check plugin documentation if this is unexpected / Users / crunchify / Documents / ansible / hosts did not meet script requirements , check plugin documentation if this is unexpected Parsed / Users / crunchify / Documents / ansible / hosts inventory source with ini plugin PLAYBOOK : crunchify - refresh - hostfile - pause - 1min.yml ************************************************************************************************************************ 1 plays in crunchify - refresh - hostfile - pause - 1min.yml PLAY [ Refresh Host Inventory at Runtime and Add a Pause while Executing Playbook . ] ***************************************************************************************************** TASK [ Gathering Facts ] ***************************************************************************************************************************************************** task path : / Users / crunchify / Documents / ansible / crunchify - refresh - hostfile - pause - 1min.yml : 2 < localhost > ESTABLISH LOCAL CONNECTION FOR USER : crunchify < localhost > EXEC / bin / sh - c 'echo ~crunchify && sleep 0' < localhost > EXEC / bin / sh - c '( umask 77 && mkdir -p "` echo /Users/crunchify/.ansible/tmp/ansible-tmp-1567083207.3-89685003930906 `" && echo ansible-tmp-1567083207.3-89685003930906="` echo /Users/crunchify/.ansible/tmp/ansible-tmp-1567083207.3-89685003930906 `" ) && sleep 0' Using module file / Library / Python / 2.7 / site - packages / ansible / modules / system / setup . py < localhost > PUT / Users / crunchify / . ansible / tmp / ansible - local - 47439Jkp0pq / tmpa9O5B0 TO / Users / crunchify / . ansible / tmp / ansible - tmp - 1567083207.3 - 89685003930906 / AnsiballZ_setup . py < localhost > EXEC / bin / sh - c 'chmod u+x /Users/crunchify/.ansible/tmp/ansible-tmp-1567083207.3-89685003930906/ /Users/crunchify/.ansible/tmp/ansible-tmp-1567083207.3-89685003930906/AnsiballZ_setup.py && sleep 0' < localhost > EXEC / bin / sh - c 'python /Users/crunchify/.ansible/tmp/ansible-tmp-1567083207.3-89685003930906/AnsiballZ_setup.py && sleep 0' < localhost > EXEC / bin / sh - c 'rm -f -r /Users/crunchify/.ansible/tmp/ansible-tmp-1567083207.3-89685003930906/ > /dev/null 2>&1 && sleep 0' ok : [ localhost ] META : ran handlers / Users / crunchify / Documents / ansible / hosts did not meet host_list requirements , check plugin documentation if this is unexpected / Users / crunchify / Documents / ansible / hosts did not meet script requirements , check plugin documentation if this is unexpected Parsed / Users / crunchify / Documents / ansible / hosts inventory source with ini plugin META : inventory successfully refreshed TASK [ pause ] *************************************************************************************************************************************************************** task path : / Users / crunchify / Documents / ansible / crunchify - refresh - hostfile - pause - 1min.yml : 10 Pausing for 60 seconds ( ctrl + C then 'C' = continue early , ctrl + C then 'A' = abort ) ok : [ localhost ] = > { "changed" : false , "delta" : 60 , "echo" : true , "rc" : 0 , "start" : "2019-08-29 07:53:28.064115" , "stderr" : "" , "stdout" : "Paused for 1.0 minutes" , "stop" : "2019-08-29 07:54:28.064686" , "user_input" : "" } META : ran handlers META : ran handlers PLAY RECAP * **************************************************************************************************************************************************************** localhost : ok = 2 changed = 0 unreachable = 0 failed = 0 |
Itu dia. Selamat. Anda telah berhasil menjalankan Ansible Playbook.

Jika Anda mencari semua tutorial Ansible, silakan ikuti halaman Arsip Ansible.