## Ansible Systemd: 管理 Linux 服务的利器### 简介在 Linux 系统中,systemd 是最常用的服务管理工具之一。它提供了强大的功能来管理服务的启动、停止、重启、状态查询等操作。Ansible 作为一个自动化运维工具,自然也提供了与 systemd 集成的模块,方便用户通过 Ansible playbook 对远程主机上的 systemd 服务进行管理。### Ansible systemd 模块Ansible 提供了 `ansible.builtin.systemd` 模块,用于管理 systemd units。它支持多种操作,例如:
启动服务:
`state=started`
停止服务:
`state=stopped`
重启服务:
`state=restarted`
重新加载服务配置:
`state=reloaded`
使服务开机自启:
`enabled=yes`
禁止服务开机自启:
`enabled=no`
屏蔽服务:
`masked=yes`
取消屏蔽服务:
`masked=no`### 使用示例以下是一些使用 `ansible.builtin.systemd` 模块的示例:
1. 启动 nginx 服务:
```yaml - name: 启动 nginx 服务hosts: webserversbecome: truetasks:- name: 确保 nginx 服务已启动ansible.builtin.systemd:name: nginxstate: started ```
2. 停止并禁用 firewalld 服务:
```yaml - name: 停止并禁用 firewalld 服务hosts: allbecome: truetasks:- name: 停止 firewalld 服务ansible.builtin.systemd:name: firewalldstate: stopped- name: 禁用 firewalld 服务开机自启ansible.builtin.systemd:name: firewalldenabled: no ```
3. 重启 ssh 服务并等待服务启动:
```yaml - name: 重启 ssh 服务并等待服务启动hosts: allbecome: truetasks:- name: 重启 ssh 服务ansible.builtin.systemd:name: sshstate: restarted- name: 等待 ssh 服务启动ansible.builtin.wait_for:port: 22state: started ```### 注意事项
使用 `ansible.builtin.systemd` 模块需要 root 权限,因此需要在 playbook 中设置 `become: true`。
`name` 参数指定要管理的服务名称,通常与服务单元文件的名称相同,例如 `nginx.service` 的服务名称为 `nginx`。
`enabled` 参数用于控制服务是否开机自启,`yes` 表示开机自启,`no` 表示禁止开机自启。
`masked` 参数用于屏蔽服务,屏蔽后的服务无法启动,通常用于禁用不需要的服务。### 总结`ansible.builtin.systemd` 模块为 Ansible 提供了管理 systemd 服务的便捷方式,可以轻松地实现服务的启动、停止、重启等操作,并可以与其他 Ansible 模块结合使用,实现更复杂的自动化运维任务。
Ansible Systemd: 管理 Linux 服务的利器
简介在 Linux 系统中,systemd 是最常用的服务管理工具之一。它提供了强大的功能来管理服务的启动、停止、重启、状态查询等操作。Ansible 作为一个自动化运维工具,自然也提供了与 systemd 集成的模块,方便用户通过 Ansible playbook 对远程主机上的 systemd 服务进行管理。
Ansible systemd 模块Ansible 提供了 `ansible.builtin.systemd` 模块,用于管理 systemd units。它支持多种操作,例如:* **启动服务:** `state=started` * **停止服务:** `state=stopped` * **重启服务:** `state=restarted` * **重新加载服务配置:** `state=reloaded` * **使服务开机自启:** `enabled=yes` * **禁止服务开机自启:** `enabled=no` * **屏蔽服务:** `masked=yes` * **取消屏蔽服务:** `masked=no`
使用示例以下是一些使用 `ansible.builtin.systemd` 模块的示例:**1. 启动 nginx 服务:**```yaml - name: 启动 nginx 服务hosts: webserversbecome: truetasks:- name: 确保 nginx 服务已启动ansible.builtin.systemd:name: nginxstate: started ```**2. 停止并禁用 firewalld 服务:**```yaml - name: 停止并禁用 firewalld 服务hosts: allbecome: truetasks:- name: 停止 firewalld 服务ansible.builtin.systemd:name: firewalldstate: stopped- name: 禁用 firewalld 服务开机自启ansible.builtin.systemd:name: firewalldenabled: no ```**3. 重启 ssh 服务并等待服务启动:**```yaml - name: 重启 ssh 服务并等待服务启动hosts: allbecome: truetasks:- name: 重启 ssh 服务ansible.builtin.systemd:name: sshstate: restarted- name: 等待 ssh 服务启动ansible.builtin.wait_for:port: 22state: started ```
注意事项* 使用 `ansible.builtin.systemd` 模块需要 root 权限,因此需要在 playbook 中设置 `become: true`。 * `name` 参数指定要管理的服务名称,通常与服务单元文件的名称相同,例如 `nginx.service` 的服务名称为 `nginx`。 * `enabled` 参数用于控制服务是否开机自启,`yes` 表示开机自启,`no` 表示禁止开机自启。 * `masked` 参数用于屏蔽服务,屏蔽后的服务无法启动,通常用于禁用不需要的服务。
总结`ansible.builtin.systemd` 模块为 Ansible 提供了管理 systemd 服务的便捷方式,可以轻松地实现服务的启动、停止、重启等操作,并可以与其他 Ansible 模块结合使用,实现更复杂的自动化运维任务。