当我使用" service"时,如何判断Ansible运行的init系统是什么?模块?

时间:2016-09-08 15:02:21

标签: ansible init

来自the Ansible documentation,服务模块:

  

控制远程主机上的服务。支持的初始化系统包括BSD init,OpenRC,SysV,Solaris SMF,systemd,upstart。

对于给定的机器,如何判断Ansible正在使用哪个init系统?例如,系统可以在其上具有init和systemd。

2 个答案:

答案 0 :(得分:14)

主机上的init系统可用作Ansible事实ansible_service_mgr

答案 1 :(得分:5)

让我们看看模块' 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
        ...

我已经删除了一些代码,但是这个代码段应该回答你的问题:如果有很多代码,Ansible可能会选择哪种系统。

Systemd是第一个搜索,然后是暴发户等...