当资源被另一个资源通知时,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
我正在编写一个在 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