2015-04-28 9 views
7

मैं अपने वाग्रेंट को प्रावधान करने के बाद ... मुझे प्रावधान के दौरान त्रुटियां मिल सकती हैं ... मैं स्क्रैच से सब कुछ करने के बजाय त्रुटि से कैसे पुनरारंभ करूं?त्रुटि से वग्रेंट/उत्तरदायी प्रावधान स्क्रिप्ट कैसे जारी रखें?

vagrant destroy -f && vagrant up 

और मैं त्रुटि आ सकती है ...

PLAY RECAP ******************************************************************** 
to retry, use: --limit @/path/to/playbook.retry 

और मैं सिर्फ जहां यह असफल से फिर से शुरू करना चाहते हैं ... यह संदेश द्वारा किया जा सकता है ... का उपयोग --limit .... लेकिन जब मैं इसे योनि संदर्भ में उपयोग करता हूं तो यह काम नहीं करता ..

+0

आप इसकी परवाह क्यों करते हैं? उत्तरदायी नाटकों बेवकूफ होना चाहिए, इसलिए पूरी प्लेबुक फिर से चलाना बहुत तेज़ होना चाहिए। –

+0

@StrahinjaKustudic "idempotent" का मतलब "तत्काल" नहीं है। आप केवल असफल कार्यों को फिर से शुरू करने में बहुत समय बचा सकते हैं। – conorsch

+0

पर्याप्त मेला। उत्तर में वर्तमान में सुविधा नहीं है, लेकिन मुझे यकीन है कि वे इसके साथ एक पुल अनुरोध पसंद करेंगे :) –

उत्तर

7

आप Vagrantfile संपादित कर सकते हैं और ansible.start_at_task चर शामिल कर सकते हैं।

तो फिर तुम प्रावधान $ vagrant reload --provision

Vagrant Reload डॉक्स

हालांकि साथ फिर से चला सकते हैं, क्योंकि Ansible नाटकों तुम सच में start_at_task करने की ज़रूरत नहीं है idempotent हैं। आप उपरोक्त रीलोड कमांड के साथ प्रावधान को फिर से चला सकते हैं।

test -f "/path/to/playbook.retry" && (ansible-playbook site.yml --limit @/path/to/playbook.retry; rm -f "/path/to/playbook.retry") || ansible-playbook site.yml 

यह मूलतः एक पुनः प्रयास करता है, तो जाँच करेगा:

-1

यदि आप Ansible के बजाय प्रावधानकर्ता के रूप में खोल इस्तेमाल किया आप इस प्रकार का आदेश चला सकता है (इस के लिए आप Ansible वीएम अपने आप में स्थापित करने की आवश्यकता होगी) फ़ाइल मौजूद है, अगर ऐसा होता है तो यह उस सीमा के साथ प्लेबुक चलाएगा और बाद में फ़ाइल को हटा देगा, अगर नहीं तो यह पूरी प्लेबुक चलाएगा। अगर आप वाग्रेंट का उपयोग कर रहे हैं तो निश्चित रूप से आपको इन आदेशों को सुडो के साथ चलाने की आवश्यकता होगी, लेकिन यह जोड़ना आसान है।

+0

खोल प्रावधान योनि वीएम के अंदर आदेश चलाता है, जबकि उत्तरदायी प्रावधान योनि वीएम के बाहर आदेश चलाता है। उत्तरदायी पुनः प्रयास फ़ाइलें वीएम के बाहर भी संग्रहीत की जाती हैं, और इसलिए अतिथि मशीन के अंदर खोल प्रावधान के लिए पहुंच योग्य नहीं हैं। – conorsch

+0

यदि आप उन्हें वारंटी साझा निर्देशिका में डालते हैं तो आप उन्हें दृश्यमान बना सकते हैं। इस प्रकार हम वेंगेंट के साथ Ansible का उपयोग करते हैं क्योंकि इस तरह आप किसी भी अतिथि ओएस (विंडोज़ की तरह) से एक वानर बॉक्स को स्पिन कर सकते हैं, जिसमें उत्तरदायी भी स्थापित नहीं है, लेकिन यह एक अन्य विषय है। –

1

आप अपने योनि बॉक्स पर उत्तर-प्लेबुक के साथ एक उत्तरदायी रन कर सकते हैं। यह चाल इन्वेंट्री फ़ाइल उत्तरदायी बनाने के लिए है। यह आपके .vagrant foler में स्थित है।

ansible-playbook playbook.yml -i vagrant/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory --start-at-task='MY_TASK' 

वाग्रेंटफाइल: अपनी भूमिकाओं को एक योनि मशीनों पर असाइन करें।

 config.vm.provision "ansible" do |ansible| 
     ansible.verbose = "v" 
     ansible.playbook = "../playbook.yml" 
     ansible.groups = { 
     "web"     => ['vm01app'], 
     "db"     => ['vm01db'], 
     } 
     end 
संबंधित मुद्दे