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

参数

参数

注释

名称

列表 / 元素=字符串

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

此参数与 state=clean 互斥。

默认值: []

原始

布尔值

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

选择

  • false ←(默认值)

  • true

状态

字符串

是否将 presentexcluded)添加到 locklist,或从 locklist 中删除(absentclean)。

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

列表 / 元素=字符串

版本锁定要添加的软件包名称规范。

返回: 成功

示例: ["bash"]

specs_todelete

列表 / 元素=字符串

版本锁定要删除的软件包名称规范。

返回: 成功

示例: ["bind"]

作者

  • Roberto Moreda (@moreda)