我正在使用厨师超市的Jenkins Chef Cookbook。
它提供jenkins_command
资源/提供者。这允许我例如重新加载Jenkins配置
jenkins_command 'reload-configuration'
这很有用,但我不想为每个Chef客户端运行重新加载配置。
现在的问题是,似乎无法通知此资源执行。
首先,我使用操作:nothing
jenkins_command 'reload-configuration' do
action :nothing
end
在应该触发重新加载配置的资源上,我添加了
notifies :execute, 'jenkins_command[reload_configuration]', :delayed
这会产生类似于
的消息在资源中找不到jenkins_command [reload_configuration] 集合
我不清楚为什么这不起作用。这是否意味着资源是资源但未添加到资源集合中?
或者我应该使用其他名称通知资源吗?
如何查看资源集合的外观?有没有办法看到它的一部分?
有resources
个对象,但该对象一直是空的[]
。我可以使用Chef::Log
或使用log
资源检查它,它始终为空。
检查资源集合的正确方法是什么? Chef文档不提供任何信息https://docs.chef.io/resource.html。它只表明我们应该能够使用任何资源。
答案 0 :(得分:1)
首先,我认为您的问题归因于-
vs _
。您为资源reload-configuration
命名,但是您通知了reload_configuration
。
其次,无论何时尝试触摸资源集合,您都会进入岩石领域。您可以在run_context.resource_collection
中找到它。使用风险自负。
答案 1 :(得分:1)
resources
本身不是对象,它是Chef::Recipe
中定义的方法调用:documentation
您可以直接使用该帮助程序或调用其他方法,但这种方式很疯狂。