Belirli bir TCP bağlantı noktasının açık olduğunu kontrol eden Ansible wait_for modülünü kullanabilirsiniz .
Bu durumda, tüm portlar zaten açık olması gerektiğinden, minimum bir no kullanabilirsiniz. Ağ sorunlarını kapsamak için yeterli olacaktır:
- name: Check all port numbers are accessible from current host
wait_for:
host: mywebserver.com
port: "{{ item }}"
state: started # Port should be open
delay: 0 # No wait before first check (sec)
timeout: 3 # Stop checking after timeout (sec)
ignore_errors: yes
with_items:
- 443
- 80
- 80443
Varsayılan olarak Ansible, saniyede bir kez ( sleepözniteliği kullanarak Ansible 2.3'te yapılandırılabilir ) kontrol eder, bu nedenle bağlantı noktası başına 3 kez kontrol edilir.
Bunu 400'den fazla ana makinenin envanterine karşı bir oyun kitabında çalıştır - Ansible tüm ana makinelerin mywebserver.combu bağlantı noktalarından erişebildiğini paralel olarak kontrol edecektir .
- paralellik tabidir ayar çatal Gözlerinde farklı
ansible.cfg.
Biz kullanan ignore_errors: yesherhangi bir hata kırmızı renkle işaretlenmiştir ama yürütme bitmiyor ki burada.
Açık bağlantı noktaları okçıkıştaki öğeler olarak ve kapalı bağlantı noktaları olarak bildirilir failed( bu çıkışı görmek için -vvbayrağı kullanmanız gerekir ansible-playbook).
İnce ayar çıkışı
Başarı ve başarısızlık durumları için daha spesifik bir çıktı istiyorsanız, ikinci bir görev ekleyerek kodun daha karmaşık olması gerekir:
wait_forgörev registerdeğişken olmalıdır
- ikinci görev
debug, başarı / başarısızlık durumuna göre çıktı üretir (örneğin, Jinja2 koşullu ifadesini kullanarak )
- her iki görevi de bir içerme dosyasına (
with_itemsdöngü olmadan ) koymanız ve içerme dosyasını bağlantı noktası başına bir kez çağırmak için include... kullanan bir ana oynatma defteri görevi yazmanız gerekir with_items.
host: mywebserver.com.