Chef infra 如何在chef中定义和调用数组?

Chef infra 如何在chef中定义和调用数组?,chef-infra,chef-recipe,Chef Infra,Chef Recipe,下面是我用来复制许多文件的资源 ['contacts_nagios2.cfg','generic-host_nagios2.cfg','generic-service_nagios2.cfg','hostgroups_nagios2.cfg','services_nagios2.cfg','timeperiods_nagios2.cfg'].each do |file| cookbook_file "/etc/nagios3/conf.d/#{file}" do source "#

下面是我用来复制许多文件的资源

['contacts_nagios2.cfg','generic-host_nagios2.cfg','generic-service_nagios2.cfg','hostgroups_nagios2.cfg','services_nagios2.cfg','timeperiods_nagios2.cfg'].each do |file|
  cookbook_file "/etc/nagios3/conf.d/#{file}" do
    source  "#{file}"
    mode '0644'
  end
end

我们能否将['contacts_nagios2.cfg'、'generic-host_nagios2.cfg'、'generic-service_nagios2.cfg'、'hostgroups_nagios2.cfg'、'services_nagios2.cfg'、'timeperiods_nagios2.cfg']定义为同一配方中的属性

这将创建一个数组类型的属性,可以在配方文件中定义:

node.default['nagios_config_files']=['contacts_nagios2.cfg','generic-host_nagios2.cfg','generic-service_nagios2.cfg','hostgroups_nagios2.cfg','services_nagios2.cfg','timeperiods_nagios2.cfg']
如果您想添加,您可以稍后执行以下操作:

node.default['nagios_config_files']|=['more_configs.cfg','even_more_configs.cfg']
(注意“=”符号前的管道“|”。)

然后可以像前面一样使用属性:

node['nagios_config_files'].each do |file|
  cookbook_file "/etc/nagios3/conf.d/#{file}" do
    source  "#{file}"
    mode '0644'
  end
end

像其他属性一样?你试过什么?