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.com
bu bağlantı noktalarından erişebildiğini paralel olarak kontrol edecektir .
- paralellik tabidir ayar çatal Gözlerinde farklı
ansible.cfg
.
Biz kullanan ignore_errors: yes
herhangi 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 -vv
bayrağı 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_for
görev register
değ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_items
dö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
.