Ansible: Çalışma Zamanında Ana Bilgisayar Envanteri Nasıl Yenilenir ve Başucu Kitabı Yürütülürken Bir Duraklatma Nasıl Eklenir?
Yayınlanan: 2022-02-14 Crunchify'da, Ansible'da çok sayıda öğretici yayınladık ve bu, Çalışma Zamanında How to Refresh Host Inventory
ve Görevleri Yürütürken Add a Pause
konularına odaklanacak.
Bu basit Amazon EC2 VM oluşturma senaryosunu ele alalım:
- Bir VM oluşturan Amazon EC2 Ansible betiğini çalıştırıyorsunuz ve genel IP'leri betikte dinamik olarak yakalıyorsunuz.
- Yürütme sırasında - bu VM'nin Genel IP'sini
[crunchify]
grubu altındakihosts
dosyasına ekliyorsunuz. - Sonraki görevde, ana bilgisayar dosyasına eklenen yeni eklenen Genel IP'yi kullanın ve üzerine Java yükleyin.
- Yenileme_inventory kullanmazsanız, yeni eklenen
refresh_inventory
ve aşağıdaki gibi bir hata görürsünüz.
1 2 |
PLAY [ crunchify ] ************************************* skipping : no hosts matched |
Ek olarak, aşağıdaki sorularınızdan herhangi biri var mı?
- Ansible'ın
dynamic inventory
nasıl yeniden yüklenir - Ansible dinamik envanter yenileme adımları
- Ana bilgisayar envanterini güncelleyebilir ve
same playbook
yeni ana bilgisayarları kullanabilir miyim? - Ansible Dynamic Inventory en son EC2 bilgilerini alamıyor - neden?
Başlayalım:
Aşama 1
spawn Amazon EC2 VM instance remotely using Ansible
nasıl oluşturulacağına ilişkin öğreticiyi tamamen izleyin?
Basit Ansible Komut Dosyası kullanarak Amazon EC2 bulut sunucusu Nasıl Oluşturulur, Başlatılır ve Yapılandırılır? (VM'yi uzaktan oluştur)
Adım 2
crunchify-ec2.yml
dosyasında aşağıdaki görevi arayın.
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}}' |
Burada gördüğünüz gibi Amazon EC2 VM
oluşturduktan sonra VM'nin genel IP'sini yakalıyor ve hosts
dosyasına kaydediyoruz.
Aynı .yml file
bazı ek görevleriniz varsa, IP'ler otomatik olarak yüklenmeyecektir. Ansible Playbook'unuza aşağıdaki satırı eklemeniz yeterlidir, tüm envanter listenizi otomatik olarak yenileyecektir.
1 |
- meta : refresh_inventory |
Aynı şekilde eklemek istiyorsanız, sadece satırın altına ekleyin:
1 2 |
- pause : minutes : 1 |
Yukarıdaki etiket, Ansible oyun kitabınız için bir dakikalık bir bekleme süresi sunacaktır.
Bekleme ve Meta Yenileme ile Amazon EC2 için Güncellenmiş Ansible Playbook
İşte örnek testim Ansible Playbook:
Dosya adı: 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 |
Çıktı:
Ansible Playbook'unuzu tekrar çalıştırın ve aşağıdaki gibi başarılı bir sonuç göreceksiniz.
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 |
Bu kadar. Tebrikler. Ansible Playbook'u başarıyla çalıştırdınız.

Tüm Ansible eğitimlerini arıyorsanız, lütfen Ansible Archive sayfasını takip edin.