मैं एक समय में एक होस्ट पर कैसे चलाऊं और असफलता पर टूटूं


15

मुझे एक एन्सिबल प्लेबुक मिली है जहाँ मैं कई फ्लैक्सी डिवाइसेस को क्रम से अपडेट करना चाहता हूँ। मैं उपयोग कर सकता हूं serial:1, लेकिन मैं पूरी तरह से प्लेबुक को रोकना चाहता हूं अगर मुझे विफलता मिलती है तो मैं त्रुटियों को जमा करने के बजाय आगे बढ़ने से पहले इसे ठीक कर सकता हूं।

मैं उसी होस्ट पर प्लेबुक को पुनः आरंभ करना चाहूंगा जिस पर मैंने रोका था। वर्तमान में Ansible v2.0 का उपयोग कर रहा है, लेकिन एक नए संस्करण में भी स्विच कर सकता है यदि उस प्रकार की सुविधा केवल नए संस्करणों में उपलब्ध है।

जवाबों:


15

असफल होने पर आपकी प्लेबुक बंद हो जाएगी और आप प्रलेखन केserial: 1 अनुसार उपयोग कर रहे हैं ।

डिफ़ॉल्ट रूप से, जब तक समूह में मेजबान नहीं होते हैं तब तक अन्सिबल क्रियाएं निष्पादित करता रहेगा।

कहा कि डिफ़ॉल्ट व्यवहार को लेकर समुदाय में कुछ भ्रम की स्थिति है, और लगता है कि यह बदल गया है - या छोटी गाड़ी है - कहीं 1.8 और 2.1 के बीच।

इसलिए, यदि serial: 1पर्याप्त नहीं है, तो इस अतिरिक्त सेटिंग का उपयोग करें:

max_failure_percentage: 0

कुछ स्थितियों में, जैसे कि ऊपर वर्णित रोलिंग अपडेट के साथ, विफलताओं की एक निश्चित सीमा तक पहुंचने पर नाटक को रोकना वांछनीय हो सकता है। इसे प्राप्त करने के लिए, संस्करण 1.3 के रूप में आप अधिकतम विफलता प्रतिशत निर्धारित कर सकते हैं ...

==

अपनी प्लेबुक पुनः प्राप्त करने के लिए, आपको इस तरह से एक विफलता संदेश देखना चाहिए:

to retry, use: --limit @/home/user/site.retry

उस --limitध्वज का उपयोग करें और अपने अगले निष्पादन पर ansible-playbookऔर यह वहीं से जारी रहेगा जहां यह विफल हुआ था।

जब तक आप retry_files_enabled = Falseअपने कॉन्फ़िगरेशन में सेट नहीं करेंगे, तब तक पुनर्प्रयास फ़ाइलें बनाई जाएंगी ।

वैकल्पिक रूप से, --start-at-taskयह भी काम कर सकता है।

सूत्रों का कहना है:

https://github.com/ansible/ansible/issues/1663

https://github.com/ansible/ansible/issues/16241

http://docs.ansible.com/ansible/playbooks_delegation.html#rolling-update-batch-size

http://docs.ansible.com/ansible/playbooks_delegation.html#maximum-failure-percentage

http://docs.ansible.com/ansible/intro_configuration.html#retry-files-enabled

http://docs.ansible.com/ansible/playbooks_startnstep.html#start-at-task


1
अगर किसी को 1.9 या 2.0 में परिवर्तन / बग का क्या हुआ, इसका बेहतर अर्थ है, तो कृपया मुझे बताएं और मैं इस उत्तर को अपडेट करूंगा।
वुडलैंड हंटर

हाँ, मुझे पता है कि अगर कोई इसे विफल कर देता है तो अन्य 2.0 अन्य होस्ट पर चलते रहेंगे। मुझे लगता है कि मुझे नहीं लगता कि अगर मैं धारावाहिक चलाती तो इसका अलग व्यवहार होता: 1। क्या आप यही कह रहे हैं?
पीटर टर्नर

यह सही है, धारावाहिक: 1 में वह व्यवहार होना चाहिए, और यदि ऐसा नहीं है (क्योंकि ??) तो max_failure_percentage जोड़ें: 0, भी। मैं यह भी सुझाव देना चाहता हूँ कि 2.0 को बहुत से बग्स में शामिल किया जा सकता है।
वुडलैंड हंटर

इतने सारे कीड़े, वास्तव में, आप 2.0 में .retry फ़ाइलों को याद कर रहे हैं! github.com/ansible/ansible/issues/13944
वुडलैंड हंटर

हे, इसलिए मैं केवल एक ही नहीं हूं जो लगातार स्रोत को पैच कर रहा हूं। यह जानकर अच्छा लगा।
पीटर टर्नर

2

2.5+ में (प्रश्न के बाद अच्छी तरह से), वहाँ डिबगर होता है जो इसमें सबसे अधिक शामिल होता है: https://docs.ansible.com/ansible/latest/user_guide/playbooks_debugger.html

एक समय में एक के रूप में, "--forks 1" का उपयोग केवल एक समय में एक प्रणाली से जोड़ता है यदि आप इसे तदर्थ करना चाहते हैं और हर बार नहीं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.