Ansible service
模块
一、简介
- 功能:
service
模块用于管理远程主机上的系统服务。它可以启动、停止、重启服务,或确保服务在系统启动时自动启动。 - 使用场景:常用于自动化管理服务的生命周期,如确保 Web 服务器、数据库服务等在部署完成后正常启动并在系统重启时自动运行。
二、基本用法
2.1 语法
ansible <pattern> -m service -a "name=<service_name> state=<state> [enabled=<yes/no>]"
<pattern>
:指定要操作的主机或主机组,例如 all
、webservers
。-m service
:指定使用 service
模块。name=<service_name>
:指定要管理的服务名称。state=<state>
:指定服务的目标状态,如 started
、stopped
、restarted
、reloaded
等。enabled=<yes/no>
:指定服务是否应在系统启动时自动启动。
2.2 常见 state
参数
started
:启动服务。如果服务已经在运行,不会进行任何操作。stopped
:停止服务。如果服务已经停止,不会进行任何操作。restarted
:重启服务。无论服务是否在运行,都会停止然后重新启动服务。reloaded
:重新加载服务配置,而不中断服务运行。仅对支持此操作的服务有效。
三、使用示例
3.1 启动服务
ansible all -m service -a "name=httpd state=started"
- 解释:在所有主机上启动
httpd
服务(Apache Web 服务器)。如果服务已经运行,则不做任何操作。
3.2 停止服务
ansible all -m service -a "name=httpd state=stopped"
- 解释:在所有主机上停止
httpd
服务。如果服务已经停止,则不做任何操作。
3.3 重启服务
ansible all -m service -a "name=httpd state=restarted"
- 解释:在所有主机上重启
httpd
服务。无论服务是否在运行,都会停止并重新启动它。
3.4 重新加载服务配置
ansible all -m service -a "name=httpd state=reloaded"
- 解释:在所有主机上重新加载
httpd
服务的配置文件,而不中断服务运行。
3.5 启动服务并设置为开机自动启动
ansible all -m service -a "name=httpd state=started enabled=yes"
- 解释:在所有主机上启动
httpd
服务,并确保它在系统启动时自动启动。
3.6 停止服务并禁用开机自动启动
ansible all -m service -a "name=httpd state=stopped enabled=no"
- 解释:在所有主机上停止
httpd
服务,并确保它在系统启动时不会自动启动。
四、其他常用选项
4.1 enabled
4.2 daemon_reload
4.3 use
五、注意事项
- 服务名称:确保服务名称与系统上实际使用的服务名称一致,特别是在不同操作系统或发行版上,服务名称可能有所不同。
- 系统兼容性:
service
模块会自动识别并使用适当的服务管理工具(如 systemd、upstart、sysvinit)。但在复杂环境中,明确指定 use
选项可能更可靠。 - 使用
reloaded
:并非所有服务都支持 reloaded
操作。在使用之前,确认服务是否支持重新加载配置而不中断运行。