community.general.dnf_versionlock 模块 – 锁定 dnf 基于系统的软件包版本

注意

此模块是 community.general 集合 (版本 10.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.general。您需要其他要求才能使用此模块,有关详细信息,请参阅 需求

要在 playbook 中使用它,请指定:community.general.dnf_versionlock

community.general 4.0.0 中的新增功能

概要

  • 使用基于 dnf 系统中的 versionlock 插件锁定软件包版本。此插件获取软件包的一组名称和版本,并排除这些软件包的所有其他版本。例如,这允许您保护软件包不被更新到较新版本。locklist 反映软件包锁定状态的插件。

需求

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

  • dnf

  • dnf-plugin-versionlock

参数

参数

注释

name

列表 / 元素=字符串

要使用 dnf repoquery 命令预期的格式添加到或从中排除或删除 locklist 的软件包名称规范。

此参数与 state=clean 互斥。

默认值: []

raw

布尔值

不要将软件包名称规范解析为 NEVRAs 以查找要锁定的特定版本。而是按原样使用软件包名称规范。这使得可以锁定尚未可用的软件包版本。

选项

  • false ← (默认)

  • true

state

字符串

是添加到 (presentexcluded) 还是从 (absentclean) locklist 中删除。

present 将软件包名称规范添加到 locklist。如果存在匹配的已安装软件包,则只添加该版本。否则,将添加所有可用的软件包版本。

excluded 将软件包名称规范添加为排除项到 locklist。这意味着由软件包名称规范表示的软件包将从事务操作中排除。将添加所有可用的软件包版本。

absent 将删除 locklist 中与软件包名称规范匹配的条目。

clean 将删除 locklist 中的所有条目。此选项与 name 互斥。

选项

  • "absent"

  • "clean"

  • "excluded"

  • "present" ← (默认)

属性

属性

支持

描述

check_mode

支持:部分

versionlock 插件针对极端情况的逻辑可能令人困惑,因此请注意,此模块将尽最大努力对即将发生的事情进行 check_mode 预测。如有疑问,请查看插件的文档。

有时,模块可能会预测 check_mode 中的更改,而这些更改不会发生,因为 versionlock 得出结论认为 locklist 中已经存在匹配的条目。

可以在 check_mode 下运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持:

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

备注

注意

  • 理想情况下,versionlock插件应该有一个试运行选项,以便确切地知道将会发生什么。到目前为止,我们必须使用尽可能接近其代码推断行为的最佳猜测。

  • 对于大多数需要锁定和解锁特定软件包版本的情况,此方法运行良好。

示例

- name: Prevent installed nginx from being updated
  community.general.dnf_versionlock:
    name: nginx
    state: present

- name: Prevent multiple packages from being updated
  community.general.dnf_versionlock:
    name:
      - nginx
      - haproxy
    state: present

- name: Remove lock from nginx to be updated again
  community.general.dnf_versionlock:
    package: nginx
    state: absent

- name: Exclude bind 32:9.11 from installs or updates
  community.general.dnf_versionlock:
    package: bind-32:9.11*
    state: excluded

- name: Keep bash package in major version 4
  community.general.dnf_versionlock:
    name: bash-0:4.*
    raw: true
    state: present

- name: Delete all entries in the locklist of versionlock
  community.general.dnf_versionlock:
    state: clean

返回值

常见的返回值已在此处记录,以下是此模块独有的字段

描述

locklist_post

列表 / 元素=字符串

模块执行后的锁定列表。

返回值:成功且(非检查模式或状态干净)

示例:["bash-0:4.4.20-1.el8_4.*"]

locklist_pre

列表 / 元素=字符串

模块执行前的锁定列表。

返回值:成功

示例:["bash-0:4.4.20-1.el8_4.*", "!bind-32:9.11.26-4.el8_4.*"]

specs_toadd

列表 / 元素=字符串

versionlock 即将添加的软件包名称规范。

返回值:成功

示例:["bash"]

specs_todelete

列表 / 元素=字符串

versionlock 即将删除的软件包名称规范。

返回值:成功

示例:["bind"]

作者

  • Roberto Moreda (@moreda)