在食谱nginx
中,我使用service
资源。
service 'nginx' do
supports status: true, restart: true, reload: true
action [:enable, :start]
end
在另一个食谱foo
中,使用了notifies :reload, 'service[nginx]'
。
当我运行这两个食谱或仅运行nginx
时,它运行正常。
但是当foo
中只有run_list
时,它会失败并显示错误service[nginx] cannot be found in the resource collection.
目前,当我只想运行foo
时,我正在使用此命令。
knife solo cook my_server --override-runlist "nginx,foo`
我已将depends 'nginx'
添加到foo/metadate.rb
,但它无法解决问题。
如何指定这样的依赖?
答案 0 :(得分:4)
您需要元数据中的depends
和include_recipe 'nginx'
顶部的foo/recipes/default.rb
。您不能只运行recipe[foo::default]
,因为它在该服务资源上存在硬件。
这将是一个很好的例子,说明为什么覆盖运行列表有点难以处理,并且在编写复杂代码时会出现故障。另一个选择会有点复杂,在foo配方中检查资源是否存在于集合中并创建一个存根(如果不存在则),但这超出了我想要描述的范围如果你不太了解厨师的内部。