मुझे एक शेफ रेसिपी में एक संसाधन मिला है जिसे मैं वैकल्पिक बनाना चाहता हूं। यही है, जब नुस्खा चलता है, अगर संसाधन विफल रहता है तो मैं बाकी सब कुछ जारी रखना चाहता हूं। मैं अभी भी जानना चाहता हूं कि उस संसाधन के साथ विफलता थी, यह सिर्फ एक महत्वपूर्ण संसाधन नहीं है और कुछ भी इस पर निर्भर नहीं है, इसलिए मैं बाकी की दौड़ जारी रखूंगा।आप शेफ संसाधन वैकल्पिक कैसे बनाते हैं?
मुझे कठपुतली के साथ काम करने के लिए उपयोग किया जाता है, जहां आपको अपनी निर्भरताओं को स्पष्ट रूप से घोषित करना होता है, और संसाधन केवल तभी छोड़े जाते हैं जब वे निर्भरता विफल हो जाते हैं क्योंकि पूरी तरह से फ़ाइल नहीं चलती है।
यह सुनिश्चित नहीं है कि यह वास्तविक प्रश्न (यहां तक कि एफएक्यू पढ़ने के बाद भी) बंद क्यों किया गया था, लेकिन मैं जो कुछ पूछ रहा हूं उसे चित्रित करने के लिए मैं कुछ उदाहरण कोड जोड़ूंगा, उम्मीद है कि कोई और फिर से खोलने या उत्तर देने के लिए वोट दे सकता है।
मैं एक देव वातावरण स्थापित करने के लिए शेफ का उपयोग कर रहा हूं, और इसका हिस्सा बस कुछ गिट रेपो को क्लोनिंग कर रहा है। कुछ भी उन पर निर्भर नहीं करता है, और कभी-कभी एक निजी रेपो है कि कुछ देवताओं तक पहुंच नहीं है। अगर यह क्लोन करने में विफल रहता है, तो मैं अन्य संसाधनों को जारी रखना जारी रखना चाहता हूं।
निम्न संसाधनों केतो:
["foo", "bar", "baz"].each do |repo|
git repo do
repository "[email protected]/example/#{repo}"
reference "master"
action :sync
depth 1
user 'dev'
group 'dev'
destination "#{node[:src_dir]}/#{repo}"
end
end
उपयोगकर्ता चल रहा यह foo क्लोन करने के लिए अनुमति नहीं है, मैं विफल foo चाहते हैं, लेकिन बार और baz अभी भी क्लोन करने के लिए है। वो कैसे संभव है?
त्वरित और गंदी विकल्पों को सेट कर सकते हैं: ignore_failure सच है, only_if "कर्ल http://github.com/repo" – agross
ignore_failure मैं के लिए क्या देख रहा था। कर्ल वास्तव में काम नहीं करेगा क्योंकि यह एक निजी रेपो है जिसे मैं प्राप्त करने की कोशिश कर रहा हूं, इसलिए मैं इसके लिए एसएसएच कुंजी पर निर्भर हूं। साथ ही, केवल_आईफ मुझे कुछ भी बताए बिना संसाधन को बाईपास कर देगा, जबकि अनदेखा_फाइल मुझे लॉग में एक अच्छा संदेश देता है: 'STDERR: त्रुटि: रिपोजिटरी नहीं मिली। ignore_failure सेट है, जारी है ' – mmrobins