हम कहते हैं कि मैं कुछ बावर्ची कोड की तरह है:
require 'mixlib/shellout'
yum_package 'somepackage'
myvar = Mixlib::ShellOut.new('/bin/somecommand').run_command.stdout.strip
जहां /bin/somecommandअभी तक मौजूद नहीं है क्योंकि यह स्थापित है somepackage। यह उस कारण से नुस्खा संकलन समय पर विफल हो जाएगा, लेकिन स्पष्ट रूप से अभिसरण समय पर काम करेगा ताकि पैकेज को सफलतापूर्वक स्थापित किया जा सके (और यदि ऐसा नहीं होता है तो जाहिर है कि नुस्खा वैसे भी विफल हो गया है)। यह भी विफल रहता है यदि पैकेज स्थापित किया गया है तो रनलिस्ट में एक पिछला नुस्खा होगा क्योंकि वे सभी एक साथ अपफ्रंट में संकलित किए जाते हैं। मैं एक बावर्ची नुस्खा में चीजों को कैसे शामिल करूं जो कि नुस्खा या रनलिस्ट खुद को स्थापित करती है?
myvarकिसी वास्तविक उत्तर के उपयोग के बारे में जानकारी के बिना , आमतौर पर मैं बाह्य कमांड से कोड मूल्यांकन का उपयोग करने से बचता हूं जब तक कि अन्य संसाधनों को परिभाषित करने के लिए बहुत आवश्यक न हो। संक्षेप में, मैं एक ऐसा चाहते हैंruby_block 'set myvar' { node.run_state['myvar'] = Mixlib::ShellOut.[...] }
node.run_stateबिल्कुल वही थी जिसकी मुझे तलाश थी - धन्यवाद इसका उत्तर बनाओ और मैं इसे स्वीकार करूंगा!