ansible.builtin.service_facts 模块 – 返回服务状态信息作为事实数据

注意

此模块是 ansible-core 的一部分,并包含在所有 Ansible 安装中。在大多数情况下,即使不指定 集合关键字,也可以使用简短的模块名称 service_facts。但是,我们建议您使用 完全限定集合名称 (FQCN) ansible.builtin.service_facts,以便轻松链接到模块文档并避免与其他可能具有相同模块名称的集合冲突。

概要

  • 返回各种服务管理实用程序的服务的状态信息作为事实数据。

要求

执行此模块的主机需要满足以下要求。

  • 以下任何受支持的初始化系统:systemd、sysv、upstart、openrc、AIX SRC

属性

属性

支持

描述

check_mode

支持:完全

可以在 check_mode 下运行并返回更改的状态预测,而无需修改目标,如果不支持,则会跳过该操作。

diff_mode

支持:

在差异模式下,将返回有关已更改的内容(或在 check_mode 下可能需要更改的内容)的详细信息

facts

支持:完全

操作返回一个 ansible_facts 字典,该字典将更新现有的主机事实

platform

平台: posix

可以对其进行操作的目标操作系统/系列

注释

注意

  • 当访问此模块收集的 ansible_facts.services 事实时,建议不要使用“点表示法”,因为服务名称中可能包含 - 字符,这将导致无效的“点表示法”,例如 ansible_facts.services.zuul-gateway。建议改为使用服务名称的字符串值作为键来获取事实数据值,例如 ansible_facts.services['zuul-gateway']

  • AIX SRC 在 2.11 版本中添加。

示例

- name: Populate service facts
  ansible.builtin.service_facts:

- name: Print service facts
  ansible.builtin.debug:
    var: ansible_facts.services

- name: show names of existing systemd services, sometimes systemd knows about services that were never installed
  debug: msg={{ existing_systemd_services | map(attribute='name') }}
  vars:
     known_systemd_services: "{{ ansible_facts['services'].values() | selectattr('source', 'equalto', 'systemd') }}"
     existing_systemd_services: "{{ known_systemd_services | rejectattr('status', 'equalto', 'not-found') }}"

- name: restart systemd service if it exists
  service:
    state: restarted
    name: ntpd.service
  when: ansible_facts['services']['ntpd.service']['status'] | default('not-found') != 'not-found'

返回的事实

此模块返回的事实将添加/更新到 hostvars 主机事实中,并且可以像任何其他主机事实一样按名称引用。它们不需要注册即可使用。

描述

services

列表 / 元素=字典

以服务名称作为键的服务状态。

返回: 始终

name

字符串

服务名称。

返回: 始终

示例: "arp-ethers.service"

source

字符串

服务的初始化系统。

其中之一:rcctlsystemdsysvupstartsrc

返回: 始终

示例: "sysv"

state

字符串

服务的状态。

这通常包括(但不限于)以下状态:failedrunningstoppedunknown

根据使用的初始化系统,可能会返回其他状态。

返回: 始终

示例: "running"

status

字符串

服务的状态。

可以是 enableddisabledstaticindirectunknown

返回: systemd 系统或 RedHat/SUSE 风格的 sysvinit/upstart 或 OpenBSD

示例: "enabled"

作者

  • Adam Miller (@maxamillion)