Anda dapat menggunakan modul wait_for Ansible yang memeriksa port TCP tertentu terbuka.
Karena dalam hal ini, semua port harus sudah terbuka, kita dapat menggunakan no minimal. percobaan, cukup untuk menutup masalah jaringan:
- 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
Secara default, Ansible akan memeriksa sekali setiap detik (dapat dikonfigurasi dalam Ansible 2.3 menggunakan sleep
atribut), jadi ini akan memeriksa 3 kali per port.
Jalankan ini di sebuah buku pedoman melawan inventaris Anda yang terdiri dari 400+ host - Ansible akan memeriksa secara paralel bahwa semua host dapat mencapai mywebserver.com
pada port tersebut.
Kami menggunakan di ignore_errors: yes
sini agar kesalahan ditandai dengan warna merah tetapi tidak menghentikan eksekusi.
Port terbuka dilaporkan sebagai ok
item dalam output dan port tertutup dilaporkan sebagai failed
(Anda harus menggunakan -vv
flag on ansible-playbook
untuk melihat output ini).
Output fine-tuning
Jika Anda ingin keluaran yang lebih spesifik untuk kasus-kasus keberhasilan dan kegagalan, kode harus lebih kompleks, menambahkan tugas kedua:
wait_for
tugas harus register
berupa variabel
- tugas kedua menghasilkan keluaran menggunakan
debug
berdasarkan kondisi keberhasilan / kegagalan (misalnya menggunakan ekspresi kondisional Jinja2 )
- maka Anda harus meletakkan kedua tugas ini dalam file sertakan (tanpa
with_items
loop apa pun ), dan menulis tugas playbook utama yang menggunakan include
... with_items
untuk memanggil file sertakan sekali per port.
host: mywebserver.com
.