使用chef停止现有服务时没有错误

时间:2016-04-03 14:07:24

标签: service chef recipe

我是厨师的新手,并尝试理解为什么这段代码不会返回任何错误,而如果我使用' 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)

2 个答案:

答案 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方法之前在内部进行了自己的幂等检查,所以它会看到表中没有这样的进程并假设它已经停止。