ansible.builtin.dnf5 模块 – 使用 dnf5 包管理器管理软件包

注意

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

ansible-core 2.15 中的新增功能

概要

  • 使用 dnf5 包管理器安装、升级、删除和列出软件包和组。

  • 警告:dnf5 包管理器仍在开发中,并非现有 ansible.builtin.dnf 模块提供的所有功能都在 ansible.builtin.dnf5 中实现,请查阅具体选项以获取更多信息。

要求

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

  • python3

  • python3-libdnf5

参数

参数

注释

allow_downgrade

布尔值

指定是否允许将指定的软件包和版本降级为可能已安装的该软件包的更高版本。请注意,设置 allow_downgrade=True 可能会使此模块的行为不具有幂等性。任务最终可能会得到一组与要安装的指定软件包的完整列表不匹配的软件包(因为降级软件包与其他软件包之间的依赖关系可能会导致对早期事务中软件包的更改)。

选择

  • false ← (默认)

  • true

allowerasing

布尔值

如果 true,则允许擦除已安装的软件包以解决依赖关系。

选择

  • false ← (默认)

  • true

autoremove

布尔值

如果 true,则从系统中删除所有最初作为用户安装软件包的依赖项安装,但不再被任何此类软件包需要的“叶子”软件包。应单独使用或当 stateabsent 时使用

选择

  • false ← (默认)

  • true

best

布尔值

在 ansible-core 2.17 中添加

当设置为 true 时,要么使用可用的最高版本软件包,要么失败。

当设置为 false 时,如果无法安装最新版本,则使用较低版本。

默认值由操作系统发行版设置。

选择

  • false

  • true

bugfix

布尔值

如果设置为 true,并且 state=latest,则仅安装已标记为错误修复相关的更新。

请注意,与 dnf upgrade-minimal 类似,此过滤器也适用于依赖项。

选择

  • false ← (默认)

  • true

cacheonly

布尔值

告诉 dnf 完全从系统缓存运行;不下载或更新元数据。

选择

  • false ← (默认)

  • true

conf_file

字符串

用于事务的远程 dnf 配置文件。

disable_excludes

字符串

禁用在 DNF 配置文件中定义的排除项。

如果设置为 all,则禁用所有排除项。

如果设置为 main,则禁用在 dnf.conf 的 [main] 中定义的排除项。

如果设置为 repoid,则禁用为给定存储库 ID 定义的排除项。

disable_gpg_check

布尔值

是否禁用正在安装的软件包的签名 GPG 检查。仅当 statepresentlatest 时才有效。

此设置会影响从存储库安装的软件包以及从文件系统或 URL 安装的“本地”软件包。

选择

  • false ← (默认)

  • true

disable_plugin

列表 / 元素=字符串

这目前是一个无操作,因为 dnf5 本身不实现此功能。

在安装/更新操作中禁用的插件名称。禁用的插件不会在事务之后保留。

默认值: []

disablerepo

列表 / 元素=字符串

在安装/更新操作中禁用的存储库的存储库 ID。这些存储库不会在事务之后保留。当指定多个存储库时,用“,”分隔它们。

默认值: []

download_dir

字符串

指定一个备用目录来存储软件包。

仅当指定 download_only 时才有效。

download_only

布尔值

仅下载软件包,不安装它们。

选择

  • false ← (默认)

  • true

enable_plugin

列表 / 元素=字符串

这目前是一个无操作,因为 dnf5 本身不实现此功能。

在安装/更新操作中启用的插件名称。启用的插件不会在事务之后保留。

默认值: []

enablerepo

列表 / 元素=字符串

在安装/更新操作中启用的存储库的存储库 ID。这些存储库不会在事务之后保留。当指定多个存储库时,用“,”分隔它们。

默认值: []

exclude

列表 / 元素=字符串

当 state=present 或 latest 时,要排除的软件包名称。可以是列表或逗号分隔的字符串。

默认值: []

install_repoquery

布尔值

这在 DNF 中实际上是一个空操作,因为 DNF 不需要它。

此选项已弃用,将在 ansible-core 2.20 中删除。

选择

  • false

  • true ← (默认)

install_weak_deps

布尔值

还会安装所有通过弱依赖关系链接的软件包。

选择

  • false

  • true ← (默认)

installroot

字符串

指定一个替代的安装根目录,所有软件包都将相对于此目录安装。

默认值: "/"

list

字符串

用于 /usr/bin/ansible playbook 的各种(非幂等)命令。最佳实践是使用 ansible.builtin.package_facts,而不是 list 参数。

lock_timeout

整数

这目前是一个空操作,因为 dnf5 没有提供配置它的选项。

等待 dnf 锁定文件被释放的时间。

默认值: 30

name

别名: pkg

列表 / 元素=字符串

软件包名称或带有版本的软件包说明符,例如 name-1.0。当使用 state=latest 时,这可以是“*”,表示运行:dnf -y update。您还可以传递 rpm 文件的 url 或本地路径。要操作多个软件包,可以接受以逗号分隔的软件包字符串或软件包列表。

软件包版本的比较运算符在此处有效 ><>=<=。示例 - name >= 1.0。运算符周围需要空格。

您还可以传递软件包提供的二进制文件的绝对路径进行安装。请参阅示例了解更多信息。

默认值: []

nobest

布尔值

这是 best 选项的相反选项,保留用于向后兼容。

自 ansible-core 2.17 起,默认值由操作系统发行版设置。

选择

  • false

  • true

releasever

字符串

指定一个替代版本,所有软件包都将从此版本安装。

security

布尔值

如果设置为 true,并且 state=latest,则仅安装标记为安全相关的更新。

请注意,与 dnf upgrade-minimal 类似,此过滤器也适用于依赖项。

选择

  • false ← (默认)

  • true

skip_broken

布尔值

跳过所有不可用的软件包或具有损坏依赖关系的软件包,而不会引发错误。相当于传递 --skip-broken 选项。

选择

  • false ← (默认)

  • true

sslverify

布尔值

禁用此事务的存储库服务器的 SSL 验证。

如果配置的存储库之一正在使用不受信任或自签名证书,则应将其设置为 false

选择

  • false

  • true ← (默认)

state

字符串

是安装(presentlatest)还是删除(absent)软件包。

默认值为 None,但实际上,默认操作为 present,除非为此模块启用了 autoremove 选项,则推断为 absent

选择

  • "absent"

  • "present"

  • "installed"

  • "removed"

  • "latest"

update_cache

别名: expire-cache

布尔值

强制 dnf 检查缓存是否过期,并在需要时重新下载。仅当 statepresentlatest 时才有效。

选择

  • false ← (默认)

  • true

update_only

布尔值

当使用 latest 时,仅更新已安装的软件包。不安装新的软件包。

仅当 statelatest 时才有效

选择

  • false ← (默认)

  • true

validate_certs

布尔值

这在 dnf5 模块中实际上是一个空操作,因为 dnf5 本身处理下载作为 rpm 源的 https url,但它是为了与 ansible.builtin.dnf 模块的功能对等/兼容性而接受的参数。

选择

  • false

  • true ← (默认)

属性

属性

支持

描述

action

支持: 部分支持

dnf5 有 2 个在底层使用它的操作插件, ansible.builtin.dnfansible.builtin.package

表示它具有相应的操作插件,因此可以在控制器上执行某些选项的部分。

async

支持: 不支持

支持与 async 关键字一起使用

bypass_host_loop

支持: 不支持

强制执行一个不按主机执行的“全局”任务,这会绕过每个主机的模板和串行、限制以及其他循环考虑。

条件语句的工作方式如同正在使用 run_once 一样,使用的变量将来自第一个可用的主机。

此操作在锁步策略之外无法正常工作。

check_mode

支持: 完全支持

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

diff_mode

支持: 完全支持

当处于 diff 模式时,将返回有关已更改(或可能需要在 check_mode 中更改)的内容的详细信息

platform

平台: rhel

可以操作的目标操作系统/系列

示例

- name: Install the latest version of Apache
  ansible.builtin.dnf5:
    name: httpd
    state: latest

- name: Install Apache >= 2.4
  ansible.builtin.dnf5:
    name: httpd >= 2.4
    state: present

- name: Install the latest version of Apache and MariaDB
  ansible.builtin.dnf5:
    name:
      - httpd
      - mariadb-server
    state: latest

- name: Remove the Apache package
  ansible.builtin.dnf5:
    name: httpd
    state: absent

- name: Install the latest version of Apache from the testing repo
  ansible.builtin.dnf5:
    name: httpd
    enablerepo: testing
    state: present

- name: Upgrade all packages
  ansible.builtin.dnf5:
    name: "*"
    state: latest

- name: Update the webserver, depending on which is installed on the system. Do not install the other one
  ansible.builtin.dnf5:
    name:
      - httpd
      - nginx
    state: latest
    update_only: yes

- name: Install the nginx rpm from a remote repo
  ansible.builtin.dnf5:
    name: 'https://nginx.ac.cn/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm'
    state: present

- name: Install nginx rpm from a local file
  ansible.builtin.dnf5:
    name: /usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    state: present

- name: Install Package based upon the file it provides
  ansible.builtin.dnf5:
    name: /usr/bin/cowsay
    state: present

- name: Install the 'Development tools' package group
  ansible.builtin.dnf5:
    name: '@Development tools'
    state: present

- name: Autoremove unneeded packages installed as dependencies
  ansible.builtin.dnf5:
    autoremove: yes

- name: Uninstall httpd but keep its dependencies
  ansible.builtin.dnf5:
    name: httpd
    state: absent
    autoremove: no

返回值

通用返回值记录在 此处,以下是此模块特有的字段

描述

failures

列表 / 元素=字符串

dnf 事务失败的列表

返回: 失败时

示例: ["参数 'lsof' 仅匹配排除的软件包。"]

msg

字符串

有关结果的附加信息

返回: 总是返回

示例: "无事可做"

rc

整数

为了兼容性,0 表示成功,1 表示失败

返回: 总是返回

示例: 0

results

列表 / 元素=字符串

dnf 事务结果的列表

返回: 成功时

示例: ["已安装: lsof-4.94.0-4.fc37.x86_64"]

作者

  • Ansible 核心团队