আমাদের বলুন যে আমার কাছে কিছু শেফ কোড রয়েছে:
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ঠিক আমি যা খুঁজছিলাম - ধন্যবাদ একটি উত্তর দিন এবং আমি এটি গ্রহণ করব!