当资源被另一个资源通知时,Chef 循环不执行

Chef loop doesn't execute when resource is notified by another resource

我正在编写一个在 ec2 实例上安装 Splunk 的厨师食谱。我只想在实例的初始设置中安装 Splunk。食谱不需要 运行 第二次。

我使用通知仅在满足条件时才执行后续代码块:

#install splunk
dpkg_package 'splunkforwarder' do
    source '/tmp/splunkforwarder.deb'
    action :nothing
    notifies :run, 'execute[configure-splunk]', :immediately
end

这是被通知的块

commands = ['command1', 'command2', 'etc']
commands.each do |i|
    execute "configure-splunk" do
        command i
        action :nothing
    end
end

问题是当调用 'configure-splunk' 时,它似乎只 运行 列表中的最后一个命令,而不是遍历所有命令。我在这里错过了什么?

没错,当您有多个具有相同名称+类型对的资源时,当您查找该名称时,只有最后一个可用。

您可能想要的是:

execute "configure-splunk" do
    command commands.join(' && ')
    action :nothing
end