Ansible `systemd` 模块

Ansible systemd 模块

一、简介

  • 功能systemd 模块用于管理和控制基于 systemd 的 Linux 系统服务。它提供了启动、停止、重启服务,以及管理服务的启动行为(如开机自动启动)的功能。
  • 使用场景:常用于现代 Linux 发行版(如 RHEL、CentOS、Rocky Linux、Ubuntu 等)上管理系统服务,确保服务按照预期运行并在系统重启后保持一致状态。

二、基本用法

2.1 语法

ansible <pattern> -m systemd -a "name=<service_name> state=<state> [enabled=<yes/no>] [other options]"
  • <pattern>:指定要操作的主机或主机组,例如 allwebservers
  • -m systemd:指定使用 systemd 模块。
  • name=<service_name>:指定要管理的 systemd 服务名称。
  • state=<state>:指定服务的目标状态,如 startedstoppedrestartedreloaded 等。
  • enabled=<yes/no>:指定服务是否应在系统启动时自动启动。

2.2 常见 state 参数

  • started:启动服务。如果服务已经在运行,则不执行任何操作。
  • stopped:停止服务。如果服务已经停止,则不执行任何操作。
  • restarted:重启服务,无论服务是否在运行,都会停止并重新启动服务。
  • reloaded:重新加载服务配置,而不中断服务运行。仅对支持此操作的服务有效。

三、使用示例

3.1 启动服务

ansible all -m systemd -a "name=httpd state=started"
  • 解释:在所有主机上启动 httpd 服务(Apache Web 服务器)。如果服务已经运行,则不做任何操作。

3.2 停止服务

ansible all -m systemd -a "name=httpd state=stopped"
  • 解释:在所有主机上停止 httpd 服务。如果服务已经停止,则不做任何操作。

3.3 重启服务

ansible all -m systemd -a "name=httpd state=restarted"
  • 解释:在所有主机上重启 httpd 服务。无论服务是否在运行,都会停止并重新启动它。

3.4 重新加载服务配置

ansible all -m systemd -a "name=httpd state=reloaded"
  • 解释:在所有主机上重新加载 httpd 服务的配置文件,而不中断服务运行。

3.5 启动服务并设置为开机自动启动

ansible all -m systemd -a "name=httpd state=started enabled=yes"
  • 解释:在所有主机上启动 httpd 服务,并确保它在系统启动时自动启动。

3.6 停止服务并禁用开机自动启动

ansible all -m systemd -a "name=httpd state=stopped enabled=no"
  • 解释:在所有主机上停止 httpd 服务,并确保它在系统启动时不会自动启动。

四、其他常用选项

4.1 enabled

  • 功能:控制服务是否在系统启动时自动启动。设置为 yes 表示启用自动启动,no 表示禁用。

  • 用法

    ansible all -m systemd -a "name=httpd enabled=yes"
    
    • 解释:确保 httpd 服务在系统启动时自动启动。

4.2 daemon_reload

  • 功能:在对 systemd 单元文件进行更改后,强制重新加载 systemd 管理器配置。通常在修改了服务的 unit 文件或创建新服务时使用。

  • 用法

    ansible all -m systemd -a "name=httpd state=restarted daemon_reload=yes"
    
    • 解释:重启 httpd 服务,并重新加载 systemd 配置,以应用新的 unit 文件更改。

4.3 masked

  • 功能:将服务设置为 masked 状态,防止服务被启动。设置为 yes 表示掩蔽(mask)服务,no 表示取消掩蔽(unmask)服务。

  • 用法

    ansible all -m systemd -a "name=httpd masked=yes"
    
    • 解释:在所有主机上掩蔽 httpd 服务,防止其被启动。

4.4 scope

  • 功能:指定服务的作用域,通常用于在容器环境中管理服务。

  • 用法

    ansible all -m systemd -a "name=httpd state=started scope=system"
    
    • 解释:在所有主机上启动 httpd 服务,并指定其作用域为 system

五、注意事项

  • 服务名称:确保服务名称与系统上实际使用的服务名称一致,不同的发行版可能使用不同的服务名称(例如 httpd vs apache2)。
  • 系统兼容性systemd 模块适用于使用 systemd 作为初始化系统的 Linux 发行版。在非 systemd 系统(如旧版本的 Debian 或 CentOS)上,可能需要使用 service 模块。
  • daemon_reload 的使用:在对 service unit 文件进行修改后,使用 daemon_reload=yes 选项来确保 systemd 重新加载配置,并应用更改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟生啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值