ansible常用模块之 -- service模块 – 管理服务
service模块 – 管理服务
一、摘要
- 控制远程主机上的业务。支持的初始化系统包括BSD init、OpenRC、SysV、Solaris SMF、systemd、upstart。
- 对于Windows目标,使用win_service模块代替
二、参数
参数 | 选项/默认值 | 描述 |
---|---|---|
arguments string | 命令行上提供的附加参数。 | |
enabled boolean | · no · yes | 服务是否应该在引导时启动。 至少需要state和enabled中的一种 |
name string required | 服务的名称 | |
pattern string | 如果服务没有响应status命令,则指定要查找的子字符串,该子字符串将在ps命令的输出中找到,作为状态结果的替身。 如果找到该字符串,则假定服务已启动。 | |
runlevel string | Default: ‘default’ | 仅适用于OpenRC初始化脚本(例如Gentoo)。 此服务所属的运行级别。 |
sleep integer | 如果服务正在重新启动,则在停止和启动命令之间休眠这么多秒。 这有助于处理行为不良的初始化脚本,这些脚本在向进程发出停止信号后立即退出。 不是所有的服务管理器都支持睡眠,即当使用systemd时,此设置将被忽略。 | |
state string | · reloaded · restarted · started · stopped | started/stopped是幂等操作,除非必要,否则不会运行命令。 restarted将始终弹起该服务。 reloaded总是会重新加载。 至少需要state和enabled中的一种。 注意,如果服务还没有启动,重新加载将启动该服务,即使您选择的初始化系统通常不会启动。 |
use string | Default: ‘auto’ | 业务模块实际使用的是系统特定的模块,通常通过自动检测,这个设置可以强制特定的模块。 通常情况下,它使用’ansible_service_mgr’事实的值,并在没有找到匹配时退回到旧的’service’模块。 |
三、示例
# 启动服务httpd,如果没有启动
- name: Start service httpd, if not started
service:
name: httpd
state: started
# 停止服务httpd,如果已经启动
- name: Stop service httpd, if started
service:
name: httpd
state: stopped
# 在所有情况下,重新启动服务httpd
- name: Restart service httpd, in all cases
service:
name: httpd
state: restarted
# 在所有情况下,重新加载服务httpd
- name: Reload service httpd, in all cases
service:
name: httpd
state: reloaded
# 启用服务httpd,而不触及状态
- name: Enable service httpd, and not touch the state
service:
name: httpd
enabled: yes
# 基于正在运行的进程/usr/bin/foo启动服务foo
- name: Start service foo, based on running process /usr/bin/foo
service:
name: foo
pattern: /usr/bin/foo
state: started
# 重新启动eth0接口的网络服务
- name: Restart network service for interface eth0
service:
name: network
state: restarted
args: eth0
官方文档:https://docs.ansible.com/ansible/2.9/modules/service_module.html#service-module