मान लीजिए कि मेरे पास एक मेजबान है, जो अन्य चीजों के बीच है, एक वेब सर्वर, जहां संबंधित Ansible भूमिका स्थापित करता है nginx, कुछ आवश्यक कॉन्फ़िगरेशन करता है /etc/nginx, और फ़ायरवॉल में पोर्ट 80 और 443 खोलता है।
कुछ बिंदु पर मैं चाहता हूं कि विशेष रूप से होस्ट को वेब सर्वर नहीं बनना चाहिए, क्योंकि किसी कारण से मैंने उस सेवा को कहीं और स्थानांतरित कर दिया। बस [webservers]इन्वेंट्री से सर्वर को हटाने से सर्वर में कचरा छोड़ जाएगा। आदर्श रूप में, मैं स्थापना रद्द करना चाहते हैं nginx, को दूर /etc/nginxनिर्देशिका (और कुछ अन्य निर्देशिका), और फ़ायरवॉल में पोर्ट 80 और 443 को बंद करें।
कठपुतली में मैं यह कर सकता हूँ। एक होस्ट जो एक वेब सर्वर है, उसके कॉन्फ़िगरेशन में कुछ इस तरह होगा:
class { 'nginx':
ensure => present,
}
और मुझे बस इतना करना है कि "वर्तमान" को "अनुपस्थित" से बदलना है। यदि nginxकक्षा अच्छी तरह से लिखी गई है, तो यह उसके द्वारा किए गए परिवर्तनों को पूर्ववत कर देगा। (आमतौर पर एक व्यवस्थापक "वर्तमान" को "अनुपस्थित" से बदल देगा, और बाद में, जब वह निश्चित हो कि सभी प्रभावित मेजबानों ने कॉन्फ़िगरेशन को पूर्ववत कर दिया है, तो वह आइटम को प्रकट से हटा देगा।)
क्या अधिक है, मुझे लगता है कि कठपुतली फ़ायरवॉल मॉड्यूल स्वचालित रूप से फ़ायरवॉल नियमों को हटा देता है जो कि प्रकट में किसी भी अधिक नहीं मिल सकते हैं; इसलिए मुझे लगता है कि, फ़ायरवॉल के लिए, आपको ऊपर "अनुपस्थित" चीज़ करने की ज़रूरत नहीं है, फ़ायरवॉल स्वचालित रूप से वैसे भी बंद हो जाएगा।
मैं इन चीजों को कैसे प्राप्त कर सकता हूं?
ensure => presentकरने के लिएensure => absentजो भी ... कैसे एक ही ansible के साथ क्या करना होगा" आदि आदर्श रूप में आप पहले से ही कोशिश कर चुके हैं।