ansible.builtin.package_facts 模块 – 将软件包信息作为事实

注意

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

概要

  • 返回有关已安装软件包的信息作为事实。

需求

以下需求是在执行此模块的主机上所需的。

  • manager 选项中查看每个软件包管理器的详细信息。

参数

参数

注释

manager

list / elements=string

系统使用的软件包管理器,以便我们查询软件包信息。从版本 2.8 开始,这是一个列表,可以支持每个系统上的多个软件包管理器。

版本 2.8 中添加了 portagepkg 选项。

版本 2.11 中添加了 apk 选项。

版本 2.13 中添加了 pkg_info 选项。

在 2.18 中添加了别名,以支持使用 manager={{ansible_facts['pkg_mgr']}}

选择项

  • "apk": Alpine Linux 软件包管理器

  • "apt": 对于基于 DEB 的发行版,目标主机上必须安装 python-apt 软件包

  • "auto" (默认): 根据 strategy,将匹配提供的第一个或所有软件包管理器,按顺序排列

  • "dnf": rpm 的别名

  • "dnf5": rpm 的别名

  • "openbsd_pkg": pkg_info 的别名

  • "pacman": Archlinux 软件包管理器/构建器

  • "pkg": libpkg 前端 (FreeBSD)

  • "pkg5": pkg 的别名

  • "pkg_info": OpenBSD 软件包管理器

  • "pkgng": pkg 的别名

  • "portage": 处理 ebuild 软件包,它需要 qlist 实用程序,该程序是 'app-portage/portage-utils' 的一部分

  • "rpm": 对于基于 RPM 的发行版,需要 RPM Python 绑定,默认情况下未安装在 Suse 上 (python3-rpm)

  • "yum": rpm 的别名

  • "zypper": rpm 的别名

默认值: ["auto"]

strategy

string

在 Ansible 2.8 中添加

此选项控制模块如何查询系统上的软件包管理器。

选择项

  • "all": 返回系统上所有支持的可用软件包管理器的信息。

  • "first" (默认): 仅返回第一个支持的可用软件包管理器的信息。

属性

属性

支持

描述

check_mode

支持: 完全支持

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

diff_mode

支持: 不支持

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

facts

支持: 完全支持

操作返回一个 ansible_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"

返回的事实

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

描述

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# Sample 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# Sample 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# Sample 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}"

name

string

包的名称。

返回: 始终

source

string

包信息的来源。

返回: 始终

version

string

包的版本。

返回: 始终

作者

  • Matthew Jones (@matburt)

  • Brian Coca (@bcoca)

  • Adam Miller (@maxamillion)