2016-04-06 27 views
1

ek işlemleri gerçekleştirin. Gerektiğinde ana bilgisayarlarda çalıştırılacak bir oynatma kitabım var. Bir sorunla karşılaşıyorum ve cevabı kendim bulamadım.ansible yalnızca ana bilgisayar yeniden başlatıldıysa

Oluşturduğumuz bir uygulamayı çalıştıran ana makinelerimiz var ve güncelleştirmelerin otomatik olarak yapılmadığı birkaç sunucu var. Amaç, bu güncellemeleri ansible ile gerektiğinde yapmaktır. Sorun şu: , güncelleme işlemi sırasında ana bilgisayar yeniden başlatıldığında, alınması gereken ek adımlar var. Ancak, ana makine yeniden başlatmamışsa, bu adımların atlanması gerekir. Ben çek çeşit ihtiyaç İşte

--- 
- name: run updates on demand 
    hosts: static-hosts 
    roles: 
    - update_system 
    - update_component1 
    - update_component2 

:

Burada gibi yml dosya benzediğini kabaca bu. Yukarıdaki adımlar ana bilgisayarın yeniden başlatılmasına neden olduysa, aşağıdakileri yapın. Eğer yeniden başlatmadıysa, sadece burada durun.

- rebuild_component1 
    - rebuild_component2 

Herhangi bir öneriniz var mı? Bu konuda yanlış gidebilirim, eğer doğru yöne işaret edersem memnun olurum. Teşekkürler! Bununla birlikte, olası çözümlerin henüz düşünülmediğini düşündü. o (benim orijinal yml dosyasında listelenen değildi) yeniden başlatma, bu yapılabilir olabilir tek yönlü aşağıdaki YML ile yaptığı yanıtlayıcı 'olduğu için: güncellenmiş halinde yaklaşık emin değilim ne

--- 
- name: run updates on demand 
    hosts: static-hosts 
    roles: 
    - update_system 
    - update_component1 
    - update_component2 
    register: updated 

- name: reboot 
    shell: shutdown -r now 
    when: updated.changed 

- name: wait for SSH 
    (usual "wait for ssh block") 

- name: rebuild if rebooted 
    roles: 
    - rebuild_component1 
    - rebuild_component2 
    when: updated.changed 

. değiştiğinde, gerçekten güncellemeler gerektiriyorsa yeniden başlatmayı (ve dolayısıyla yeniden oluşturmayı) tetikler.

+0

Bu arada, ana bilgisayar yeniden başlatıldığında sesler garip geliyorsa, yalnızca bir güncelleme sonrasında uygulamayı yeniden inşa etme fikrinin, aslında durumun gerçekte olduğunu anlıyorum. Ana bilgisayar yeniden başlatıldığında yalnızca yeniden yapılandırma gerektirir. – Martin

cevap

-1

Sunucunun çalışma süresini komut aracılığıyla kaydedebilir ve buna bağlı olarak yapabilirsiniz. Belki de mükemmel çözüm değil, ama bunun işe yarayacağını düşünüyorum.

- command: uptime 
    register: uptime 
+0

Bunun gibi bir şey kullanmayı düşündüm ama yeniden başlatmayı kendisi yapabildiğimden beri, register/isnsible kullanırken daha zarif bir çözüm bulmuş olabileceğimi düşünüyorum. Şimdi soru güncelleniyor. – Martin

+0

Bence çözümünüz iyi görünüyor. Ssl için beklemesi de kolay olmalıdır: ([Docs] (https://docs.ansible.com/ansible/wait_for_module.html#examples)) '# # bağlantı noktası 22'nin açılması ve bulunmaması için 300 saniye bekleyin." OpenSSH ", envanter_hostname çözülebilir # olduğunu varsaymayın ve 10 saniye denetlemeye başlamayın - local_action: wait_for port = 22 host =" {{ansible_ssh_host | default (inventory_hostname)}} "search_regex = OpenSSH delay = 10 ' –

0

Yukarıda listelenen "olası çözümüm" işler.

İlgili konular