ansible 常用模块 systemd

发布时间 2023-03-31 15:59:09作者: 小吉猫

模块说明

  • 控制远程主机上的 systemd 单元(服务、计时器等)。

参数说明

Parameter

Comments

daemon_reexec

 

aliases: daemon-reexec

boolean

added in Ansible 2.8

在执行任何其他操作之前运行 daemon_reexec 命令,systemd 管理器将序列化管理器状态。

Choices:

  • false ← (default)

  • true

daemon_reload

 

aliases: daemon-reload

boolean

在执行任何其他操作之前运行 daemon-reload,以确保 systemd 已读取任何更改。

当设置为 true 时,即使模块没有启动或停止任何东西,也会运行 daemon-reload。

Choices:

  • false ← (default)

  • true

enabled

 

boolean

设备是否应在开机时启动。至少需要 state 和 enabled 之一。

Choices:

  • false

  • true

force

 

boolean

added in Ansible 2.6

是否覆盖现有的符号链接。

Choices:

  • false

  • true

masked

 

boolean

不管单位要不要屏蔽,被屏蔽的单位是不可能启动的。

Choices:

  • false

  • true

name

aliases: service, unit

string

单位名称。此参数只使用一个单元的名称。

当没有给出扩展时,它被隐含到作为systemd的.service。

在chroot环境中使用时,您总是需要指定带有扩展名的单元的名称。例如,cron.service。

no_block

boolean

added in Ansible 2.3

不要同步等待请求的操作完成。排队的作业将继续进行,而 Ansible 不会在其完成时进行阻塞。

Choices:

  • false ← (default)

  • true

scope

 

string

added in Ansible 2.7

在给定的服务管理器范围内运行systemctl,作为默认的系统范围系统、当前用户的范围用户或全局所有用户的范围。

要使systemd与“user”一起工作,执行用户必须启动并访问自己的dbus实例(systemd要求)。

用户dbus进程通常在正常登录期间启动,但在运行Ansible任务期间不启动。否则,您可能会得到一个“无法连接到总线:没有这样的文件或目录”错误。

用户必须具有访问权限,通常通过设置XDG_RUNTIME_DIR变量进行访问,请参阅下面的示例。

Choices:

  • "system" ← (default)

  • "user"

  • "global"

state

 

string

started/stopped 是幂等操作,除非必要,否则不会运行命令。重新启动将始终反弹单位。重新加载将始终重新加载。

Choices:

  • "reloaded"

  • "restarted"

  • "started"

  • "stopped"

示例

- name: Make sure a service unit is running
  ansible.builtin.systemd:
    state: started
    name: httpd

- name: Stop service cron on debian, if running
  ansible.builtin.systemd:
    name: cron
    state: stopped

- name: Restart service cron on centos, in all cases, also issue daemon-reload to pick up config changes
  ansible.builtin.systemd:
    state: restarted
    daemon_reload: true
    name: crond

- name: Reload service httpd, in all cases
  ansible.builtin.systemd:
    name: httpd.service
    state: reloaded

- name: Enable service httpd and ensure it is not masked
  ansible.builtin.systemd:
    name: httpd
    enabled: true
    masked: no

- name: Enable a timer unit for dnf-automatic
  ansible.builtin.systemd:
    name: dnf-automatic.timer
    state: started
    enabled: true

- name: Just force systemd to reread configs (2.4 and above)
  ansible.builtin.systemd:
    daemon_reload: true

- name: Just force systemd to re-execute itself (2.8 and above)
  ansible.builtin.systemd:
    daemon_reexec: true

- name: Run a user service when XDG_RUNTIME_DIR is not set on remote login
  ansible.builtin.systemd:
    name: myservice
    state: started
    scope: user
  environment:
    XDG_RUNTIME_DIR: "/run/user/{{ myuid }}"

参考文档

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/systemd_module.html#ansible-collections-ansible-builtin-systemd-module