आप Ansible Wait_for मॉड्यूल का उपयोग कर सकते हैं जो एक विशिष्ट TCP पोर्ट की जांच करता है जो खुला है।
चूंकि इस मामले में, सभी पोर्ट पहले से ही खुले होने चाहिए, इसलिए हम न्यूनतम संख्या का उपयोग कर सकते हैं। रिट्रीट, नेटवर्क मुद्दों को कवर करने के लिए पर्याप्त:
- 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
डिफ़ॉल्ट रूप से, Ansible प्रत्येक सेकंड में एक बार जांच करेगा ( sleep
विशेषता का उपयोग करके Ansible 2.3 में कॉन्फ़िगर किया गया है), इसलिए यह प्रति पोर्ट 3 बार जांच करेगा।
इसे 400+ मेजबानों की अपनी इन्वेंट्री के खिलाफ प्लेबुक में चलाएं - अन्सिबल समानांतर में जांच करेगा कि सभी होस्ट mywebserver.com
उन बंदरगाहों पर पहुंच सकते हैं ।
हम ignore_errors: yes
यहां उपयोग करते हैं ताकि किसी भी त्रुटि को लाल रंग में चिह्नित किया जाए लेकिन निष्पादन बंद न करें।
खुले बंदरगाहों को ok
आउटपुट में आइटम के रूप में सूचित किया जाता है और बंद बंदरगाहों को रिपोर्ट किया जाता है failed
(आपको इस आउटपुट को देखने के लिए -vv
ध्वज का उपयोग करना चाहिए ansible-playbook
)।
फाइन-ट्यूनिंग आउटपुट
यदि आप सफलता और विफलता के मामलों के लिए अधिक विशिष्ट आउटपुट चाहते हैं, तो कोड को और अधिक जटिल होना चाहिए, दूसरा कार्य जोड़ना:
wait_for
कार्य register
एक चर होना चाहिए
- दूसरा कार्य
debug
सफलता / असफलता की स्थिति (उदाहरण के लिए जिनजा 2 सशर्त अभिव्यक्ति का उपयोग करके ) के आधार पर उत्पादन का उत्पादन करता है
- फिर आपको इन दोनों कार्यों को एक सम्मिलित फ़ाइल (किसी भी
with_items
लूप के बिना ) में डालने की आवश्यकता है , और एक मुख्य प्लेबुक कार्य लिखें जो पोर्ट के अनुसार शामिल फ़ाइल को एक बार कॉल करने के लिए include
... का उपयोग करता है with_items
।
host: mywebserver.com
।