【问题标题】:Chef using variables in a array厨师使用数组中的变量
【发布时间】:2016-10-20 02:50:11
【问题描述】:

如何在 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 

【问题讨论】:

    标签: arrays ruby linux chef-infra chef-recipe


    【解决方案1】:

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

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

    或者你可以切换到这个:

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

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

    【讨论】:

    • 感谢您的回答,这很有效。如何在子文件夹上使用该命令设置用户组? recursive true 不会在/var/lib/temp/opt/chef/library 下的子文件夹上设置用户组。 Linux 中与chown -R user:group /var/lib/temp/* 等效的命令。
    • 这完全是另外一个问题,所以最好把它作为一个单独的东西分开。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 2020-07-01
    • 1970-01-01
    • 2017-07-27
    • 2013-03-22
    • 1970-01-01
    相关资源
    最近更新 更多