我写了一个脚本,作为服务触发。 当我打电话给service myservice start服务启动罚款。 但是,当使用厨师触发相同的服务时,服务不会启动。 我的厨师服务代码看起来像这样
service "myservice" do supports :status => true, :restart => true, :reload => true action [ :enable, :start ] end
我使用knife bootstrap <ip> -r 'recipe[testservice]'来调用脚本。 我在这里错过了什么? 谢谢您的帮助!
很可能你的/etc/init.d/myservice脚本中有一些错误。 当你说你的service myservice status支持status命令,厨师将运行service myservice status并检查退出代码。 如果它是0,则认为服务正在运行。 您的脚本应该以非零代码退出。
当厨师启动服务时,首先检查服务是否已经在运行(CentOS上的“/ sbin / service myservice status”)。 如果它确定它已经在运行,它将不会启动,或者logging高于debugging级别的任何事物:
https://github.com/opscode/chef/blob/master/lib/chef/provider/service.rb#L87
我面临着同样的问题,实际上厨师11服务器依靠动作:状态来启动服务。 因此,就像动作在脚本中开始和停止一样,你也需要动作状态,它将返回脚本的当前状态。