来自Ansible doc:
支持的init系统包括BSD、OpenRC、SysV、Solaris、systemd、upstart。
Ansible试图按什么顺序运行服务?如果服务X中既有init.d脚本,也有/etc/init中的新启动脚本,怎么办?
发布于 2021-10-07 05:37:43
正如在ansible.builtin.service文档中所解释的:
参数:
use
服务模块实际使用系统特定模块,通常通过自动检测,此设置可以强制特定模块。
因此,官方的答案是,Ansible内部决定使用什么。
更具体而言:
通常,它使用'ansible_service_mgr‘事实的值,当找不到匹配时,返回到旧的’服务‘模块。
因此,Ansible通常使用一个Ansible事实,'ansible_service_mgr',它告诉它要使用哪个init系统。如果不成功,则使用“service”模块,该模块有自己的自动检测逻辑(见下文)。
事实'ansible_service_mgr‘是在事实/制度/服务_mgr.py中通过检查各种系统属性来确定的,例如OS名称和某些文件的存在。
至于旧的“服务”模块的回退:查看ist代码( 模块/service.py on Github ),看来ansible分两个步骤执行检测:
然后,这些特定于平台的子类将尝试检测要使用的init系统。例如,LinuxService将尝试以下init系统:
然而,它可能是明智的不依赖这一点,因为它没有正式记录,并可能改变。
https://serverfault.com/questions/734724
复制相似问题