无法让bash在厨师中循环

Viv*_*vek 0 unix bash chef-infra chef-recipe

我试图在chef中运行一个循环数组(循环包含一个bash命令).有人对此有任何想法吗?

symlink_db = data_bag_item(“my”_db,”my”_db)
source = symlink_db[“sourceFile”]
instances = symlink_db["Instances"].split(',')  <---Instances is a comma separated string in Databag

bash "create_link" do
   puts "1: #{instances}"       <-------Puts all instances correctly
   instances.each do |instance|
        puts "2: #{instance}"    <------ This prints each instance in loop correctly 

        code <<-EOH           
           echo "ln -fs #{source} #{instance}";   <----- This is printed only for last instance in the loop
        EOH
        end
end
Run Code Online (Sandbox Code Playgroud)

感谢如果有人能尽快帮助.....谢谢

spi*_*lok 5

你需要循环中的bash资源:

instances.each do |instance|
  bash "create_link-#{instance}" do
    code <<-EOH
      echo "ln -fs #{source} #{instance}"
    EOH
  end
end
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这不是惯用厨师.你应该简单地使用这样的link资源:

instances.each do |instance|
  link instance do
    to source
  end
end
Run Code Online (Sandbox Code Playgroud)

这种方法的一个优点是它使您的配方跨平台.它的可读性也更高.