厨师在数组中使用变量

时间:2016-10-19 07:26:34

标签: arrays ruby linux chef chef-recipe

如何在Chef中使用数组中的变量。我正在尝试使用数组创建多个文件夹。但是我的代码不起作用:

代码

variable1 = "/var/lib/temp"
variable2 = "/opt/chef/library"

%w{ #{variable1} #{variable2} }.each do |dir| 
    directory dir do
       owner 'root'
       group 'root'
       mode  '755'
       recursive true
       action :create
    end
end 

1 个答案:

答案 0 :(得分:1)

%w{ ... }语法用于声明一个单词数组,并且不进行插值。既然你想要一个预先存在的字符串数组,你可以通过声明一个普通的数组来这样做:

[ variable1, variable2 ].each do |dir|
  # ...
end

或者您可以切换到:

%w[ /var/lib/temp /opt/chef/library ].each |dir|
  # ...
end

第二种形式更有意义,因为这是你的意图。不需要中间变量。