我是厨师的新手,并尝试理解为什么这段代码不会返回任何错误,而如果我使用' start'如果不存在此类服务,我将收到错误。
service 'non-existing-service' do
action :stop
end
# chef-apply test.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
* service[non-existing-service] action stop (up to date)
答案 0 :(得分:1)
如果您在Windows上运行,不知道您正在运行哪个平台它至少应该记录
Chef::Log.debug "#{@new_resource} does not exist - nothing to do"
鉴于您已将调试作为日志级别。
你可能会认为这是错误的行为,但如果服务剂量不存在,那肯定不会运行。
源代码 https://github.com/chef/chef/blob/master/lib/chef/provider/service/windows.rb#L147
答案 1 :(得分:1)
如果您正在获取init.d
提供程序的其中一个变体,则它们默认通过grepping进程表来获取服务的当前状态。因为Chef在调用提供程序的stop方法之前在内部进行了自己的幂等检查,所以它会看到表中没有这样的进程并假设它已经停止。