ansible.builtin.package_facts 模块 – 以 facts 形式提供软件包信息

注意

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

概要

  • 以 facts 形式返回有关已安装软件包的信息。

要求

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

  • 对于 'portage' 支持,它需要 qlist 实用程序,该实用程序是 'app-portage/portage-utils' 的一部分。

  • 对于基于 Debian 的系统,必须在目标主机上安装 python-apt 包。

  • 对于基于 SUSE 的系统,必须在目标主机上安装 python3-rpm 包。 需要此包是因为 SUSE 默认不包含 RPM Python 绑定。

参数

参数

注释

manager

列表 / elements=string

系统使用的软件包管理器,以便我们可以查询软件包信息。

自 2.8 版以来,这是一个列表,可以支持每个系统的多个软件包管理器。

在 2.8 版中添加了 'portage' 和 'pkg' 选项。

在 2.11 版中添加了 'apk' 选项。

在 2.13 版中添加了 'pkg_info' 选项。

选择

  • "auto" ← (默认)

  • "rpm"

  • "apt"

  • "portage"

  • "pkg"

  • "pacman"

  • "apk"

  • "pkg_info"

默认值: ["auto"]

strategy

字符串

在 Ansible 2.8 中添加

此选项控制模块如何查询系统上的软件包管理器。 first 表示它将仅返回第一个受支持的可用软件包管理器的信息。all 将返回系统上所有受支持和可用的软件包管理器的信息。

选择

  • "first" ← (默认)

  • "all"

属性

属性

支持

描述

check_mode

支持: 完全

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

diff_mode

支持:

在 diff 模式下运行时,将返回有关已更改(或可能需要在 check_mode 中更改)的详细信息

facts

支持: 完全

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

platform

平台: posix

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

示例

- name: Gather the package facts
  ansible.builtin.package_facts:
    manager: auto

- name: Print the package facts
  ansible.builtin.debug:
    var: ansible_facts.packages

- name: Check whether a package called foobar is installed
  ansible.builtin.debug:
    msg: "{{ ansible_facts.packages['foobar'] | length }} versions of foobar are installed!"
  when: "'foobar' in ansible_facts.packages"

返回的 Facts

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

描述

packages

字典

将软件包名称映射到包含软件包信息的非空字典列表。

列表中的每个字典都对应于软件包的一个已安装版本。

下面描述的字段适用于所有软件包管理器。根据软件包管理器,软件包可能具有更多字段。

返回:当指定或自动检测操作系统级软件包管理器时

示例: "{\n  \"packages\": {\n    \"kernel\": [\n      {\n        \"name\": \"kernel\",\n        \"source\": \"rpm\",\n        \"version\": \"3.10.0\",\n        ...\n      },\n      {\n        \"name\": \"kernel\",\n        \"source\": \"rpm\",\n        \"version\": \"3.10.0\",\n        ...\n      },\n      ...\n    ],\n    \"kernel-tools\": [\n      {\n        \"name\": \"kernel-tools\",\n        \"source\": \"rpm\",\n        \"version\": \"3.10.0\",\n        ...\n      }\n    ],\n    ...\n  }\n}\n# RPM 示例\n{\n  \"packages\": {\n    \"kernel\": [\n      {\n        \"arch\": \"x86_64\",\n        \"epoch\": null,\n        \"name\": \"kernel\",\n        \"release\": \"514.26.2.el7\",\n        \"source\": \"rpm\",\n        \"version\": \"3.10.0\"\n      },\n      {\n        \"arch\": \"x86_64\",\n        \"epoch\": null,\n        \"name\": \"kernel\",\n        \"release\": \"514.16.1.el7\",\n        \"source\": \"rpm\",\n        \"version\": \"3.10.0\"\n      },\n      {\n        \"arch\": \"x86_64\",\n        \"epoch\": null,\n        \"name\": \"kernel\",\n        \"release\": \"514.10.2.el7\",\n        \"source\": \"rpm\",\n        \"version\": \"3.10.0\"\n      },\n      {\n        \"arch\": \"x86_64\",\n        \"epoch\": null,\n        \"name\": \"kernel\",\n        \"release\": \"514.21.1.el7\",\n        \"source\": \"rpm\",\n        \"version\": \"3.10.0\"\n      },\n      {\n        \"arch\": \"x86_64\",\n        \"epoch\": null,\n        \"name\": \"kernel\",\n        \"release\": \"693.2.2.el7\",\n        \"source\": \"rpm\",\n        \"version\": \"3.10.0\"\n      }\n    ],\n    \"kernel-tools\": [\n      {\n        \"arch\": \"x86_64\",\n        \"epoch\": null,\n        \"name\": \"kernel-tools\",\n        \"release\": \"693.2.2.el7\",\n        \"source\": \"rpm\",\n        \"version\": \"3.10.0\"\n      }\n    ],\n    \"kernel-tools-libs\": [\n      {\n        \"arch\": \"x86_64\",\n        \"epoch\": null,\n        \"name\": \"kernel-tools-libs\",\n        \"release\": \"693.2.2.el7\",\n        \"source\": \"rpm\",\n        \"version\": \"3.10.0\"\n      }\n    ],\n  }\n}\n# deb 示例\n{\n  \"packages\": {\n    \"libbz2-1.0\": [\n      {\n        \"version\": \"1.0.6-5\",\n        \"source\": \"apt\",\n        \"arch\": \"amd64\",\n        \"name\": \"libbz2-1.0\"\n      }\n    ],\n    \"patch\": [\n      {\n        \"version\": \"2.7.1-4ubuntu1\",\n        \"source\": \"apt\",\n        \"arch\": \"amd64\",\n        \"name\": \"patch\"\n      }\n    ],\n  }\n}\n# pkg_info 示例\n{\n  \"packages\": {\n    \"curl\": [\n      {\n          \"name\": \"curl\",\n          \"source\": \"pkg_info\",\n          \"version\": \"7.79.0\"\n      }\n    ],\n    \"intel-firmware\": [\n      {\n          \"name\": \"intel-firmware\",\n          \"source\": \"pkg_info\",\n          \"version\": \"20210608v0\"\n      }\n    ],\n  }\n}"

名称

字符串

软件包的名称。

返回: 总是

来源

字符串

软件包信息的来源。

返回: 总是

版本

字符串

软件包的版本。

返回: 总是

作者

  • Matthew Jones (@matburt)

  • Brian Coca (@bcoca)

  • Adam Miller (@maxamillion)