【发布时间】:2017-01-16 14:05:06
【问题描述】:
来自the Ansible documentation,服务模块:
控制远程主机上的服务。支持的init系统包括BSD init、OpenRC、SysV、Solaris SMF、systemd、upstart。
对于给定的机器,我如何知道 Ansible 正在使用哪个初始化系统?例如,一个系统可能有 init 和 systemd。
【问题讨论】:
来自the Ansible documentation,服务模块:
控制远程主机上的服务。支持的init系统包括BSD init、OpenRC、SysV、Solaris SMF、systemd、upstart。
对于给定的机器,我如何知道 Ansible 正在使用哪个初始化系统?例如,一个系统可能有 init 和 systemd。
【问题讨论】:
主机上的初始化系统可作为 Ansible fact ansible_service_mgr 使用。
【讨论】:
让我们看看模块的code:
内部def main()::
# Find service management tools
service.get_service_tools()
然后到class LinuxService(Service):和def get_service_tools(self):
# Locate a tool to enable/disable a service
if check_systemd():
# service is managed by systemd
...
elif location.get('initctl', False) and os.path.exists("/etc/init/%s.conf" % self.name):
# service is managed by upstart
...
elif location.get('rc-service', False):
# service is managed by OpenRC
...
elif self.svc_initscript:
# service is managed by with SysV init scripts
...
我已经剪掉了一些代码,但是这个 sn-p 应该回答你的问题:如果有很多系统 Ansible 可能会选择什么。
Systemd 是第一个搜索的,然后是暴发户,等等......
【讨论】: