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)