使用 chef 时服务无法启动

使用 chef 时服务无法启动

我编写了一个脚本,将其作为服务触发。当我调用时,service myservice start服务可以正常启动。但是,当使用 chef 触发同一服务时,服务不会启动。我的 chef 服务代码如下所示

service "myservice" do
 supports :status => true, :restart => true, :reload => true
 action [ :enable, :start ]
end

我使用 调用脚本knife bootstrap <ip> -r 'recipe[testservice]'。我这里遗漏了什么?谢谢帮助!

答案1

您的脚本中很可能存在一些错误/etc/init.d/myservice。当您说您的服务支持status命令时,chef 将运行service myservice status并检查退出代码。如果退出代码为 0,则假定服务正在运行。您的脚本应以非零代码退出。

答案2

Chef 启动服务时,首先会检查服务是否已在运行(在 CentOS 上为“/sbin/service myservice status”)。如果确定服务已在运行,则不会启动,也不会在高于调试级别的级别记录任何内容:

https://github.com/opscode/chef/blob/master/lib/chef/provider/service.rb#L87

答案3

我遇到了同样的问题,实际上 chef 11 服务器依靠操作 :status 来启动服务。因此,就像脚本中的操作启动和停止一样,您还需要操作状态,它将返回脚本的当前状态。

相关内容