কেউ দয়া করে আমাকে ব্যাখ্যা করতে পারেন শেফ কীভাবে কাজ করে? এটি একটি দুর্দান্ত বিস্তৃত প্রশ্ন, তাই এটি সংকুচিত করার জন্য আমার কাছে এই খুব সহজ রেসিপি রয়েছে যা ব্যবহারকারীর তালিকার উপরে চলে আসে এবং যদি ইতিমধ্যে বিদ্যমান না থাকে তবে প্রতিটি তৈরি করে। এটা কাজ করে না.
আমি লুপটি যা বলতে পারি তা থেকে প্রত্যাশা মতোই ঘটছে বলে মনে হচ্ছে। লুপটি প্রতিটি ব্যবহারকারী তৈরি করার জন্য আমার ব্যাশ কমান্ডগুলি সম্পন্ন করে একবার লুপের প্রতিটি পুনরাবৃত্তির জন্য কার্যকর করা হয়। যাইহোক, যখন ব্যাশ কমান্ডগুলি কার্যকর করা হয় তখন তারা কেবল প্রথম লুপ পুনরাবৃত্তি থেকে ব্যবহারকারীর মান বলে মনে হয়।
এই উদাহরণের অনুরূপ ভেরিয়েবল ডেটার উপরে থাকা কোনও রেসিপি লেখার সঠিক উপায় কী?
এই রেসিপিটি এখানে:
node[:users].each do |user|
puts "in loop for #{user['username']}"
bash "create_user" do
user "root"
code do
puts "running 'useradd' for #{user['username']}"
"useradd #{user['username']}"
end
not_if do
puts "checking /etc/passwd for #{user['username']}"
"cat /etc/passwd | grep #{user['username']}"
end
end
end
আমি নিম্নলিখিত সেটআপ দিয়ে ভ্যাগ্র্যান্ট ব্যবহার করে এটি পরীক্ষা করছি:
Vagrant::Config.run do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
config.vm.provision :chef_solo do |chef|
chef.add_recipe "sample"
chef.json = {
:users => [
{:username => 'testA'},
{:username => 'testB'},
{:username => 'testC'},
{:username => 'testD'},
{:username => 'testE'},
],
}
end
end
রেসিপিটিতে বিবৃতি রাখে এমন বার্তাগুলি উত্সাহিত করে:
2013-03-08T01:03:46+00:00] INFO: Start handlers complete.
in loop for testA
in loop for testB
in loop for testC
in loop for testD
in loop for testE
[2013-03-08T01:03:46+00:00] INFO: Processing bash[create_user] action run (sample::default line 5)
checking /etc/passwd for testA
[2013-03-08T01:03:46+00:00] INFO: Processing bash[create_user] action run (sample::default line 5)
checking /etc/passwd for testA
[2013-03-08T01:03:46+00:00] INFO: Processing bash[create_user] action run (sample::default line 5)
checking /etc/passwd for testA
[2013-03-08T01:03:46+00:00] INFO: Processing bash[create_user] action run (sample::default line 5)
checking /etc/passwd for testA
[2013-03-08T01:03:46+00:00] INFO: Processing bash[create_user] action run (sample::default line 5)
checking /etc/passwd for testA
[2013-03-08T01:03:46+00:00] INFO: Chef Run complete in 0.026071 seconds