厨师最终会做什么以使服务“启用”?

时间:2018-08-10 05:30:32

标签: chef systemd init.d

当我声明服务如下时:

service "my_service" do
  action [:enable, :start]
end

厨师到底会执行什么? 它会只运行service my_service enableservice my_service start吗?

对于start,您的Linux服务器使用的是init.d还是systemd应该没有问题,因为systemctl命令与service命令向后兼容。但是,实际上enable命令中没有service这样的选项。例如,如果您运行service my_service enable,则会得到

Usage: /sbin/service my_service {start|stop|reload|restart|try-restart|force-reload|status} 

就我而言,我正在使用systemd,而我真正要做的厨师就是运行systemctl enable my_service。但是从文档中我无法说出厨师到底会做些什么。

我可以为start_command操作指定一个自定义start,但是很遗憾,没有enable_command

有人对此有明确的答案或参考吗?

2 个答案:

答案 0 :(得分:0)

好吧,我在厨师那里碰到了一个叫做“提供者”的东西。 我什至可以选择指定要使用哪个提供商的服务。

service my_service
  action [:enable, :start]
  provider Chef::Provider::Service::Systemd
end

因此,我认为只要确保可以使用Chef::Provider::Service::Systemd,就可以按预期执行enable操作。

但是默认的厨师提供者将使用什么?以及如何检查和更改?

答案 1 :(得分:0)

最后,厨师将执行以下操作: 启用- 在启动时启用服务。此操作等效于Microsoft Windows平台上的自动启动类型。在AIX平台上使用系统资源控制器(SRC)时,不支持此操作,因为系统资源控制器(SRC)没有在系统引导时启用和禁用服务的标准机制。

开始- 启动服务,并使其保持运行状态,直到停止或禁用。

您的情况-

它将在启动时启用服务,就像Windows中的自动服务启用器

希望这会有所帮助