一个服务的action 'enable' chef到底做了什么?

What does chef do in the end for action 'enable' for a service?

当我声明一个服务时:

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

大厨最终会执行什么? 它只是 运行 service my_service enableservice my_service start 吗?

对于 start,无论您的 linux 服务器使用 init.d 还是 systemd 都应该没有问题,因为 systemctl 命令向后兼容 service 命令。但是 service 命令确实没有 enable 这样的选项。例如,如果您 运行 service my_service enable,您将得到

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

就我而言,我正在使用 systemd,我真正要做的是 运行 systemctl enable my_service。但是从文档中我无法判断厨师最终会做什么。

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

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

好的,我刚刚在 chef 中遇到了一个叫做 "provider" 的东西。 我什至可以选择指定哪个提供商来提供服务。

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

所以我觉得只要能确定Chef::Provider::Service::Systemd被使用,enable这个动作就可以正常执行了。

但是 chef 将使用的默认提供程序是什么?以及如何检查和更改它?

Chef 最后对 action 做了如下操作: 使能够 - 在启动时启用服务。此操作相当于 Microsoft Windows 平台上的自动启动类型。在 AIX 平台上使用系统资源控制器 (SRC) 时不支持此操作,因为系统资源控制器 (SRC) 没有在系统启动时启用和禁用服务的标准机制。

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

你的情况 -

它将在启动时启用服务,就像 windows

中的自动服务启用程序一样

希望这会有所帮助