dnf5#

Модуль ansible.builtin.dnf5 предоставляет интерфейс для управления пакетами в системах на базе RPM, использующих пакетный менеджер DNF5.

Описание применения модулей приведено в документе Модули.

Особенности работы#

Для работы модуля на управляемых узлах должен быть установлен пакет python3-libdnf5.

Основные возможности:

  • установка, обновление и удаление пакетов;

  • установка пакетов указанных версий;

  • управление набором репозиториев.

Примечание

Модуль ansible.builtin.dnf5 не является прямой заменой ansible.builtin.dnf. Он предназначен только для систем, где уже используется DNF5. Для остальных используйте модуль ansible.builtin.dnf.

Параметры#

Модуль принимает следующие параметры:

allow_downgrade#

Разрешение на замену пакета его более старой версией.

Использование allow_downgrade=true может сделать модуль ansible.builtin.dnf5 неидемпотентным. В результате выполнения задачи список фактически установленных пакетов может отличаться от заданного в параметрах.

Возможные значения:

  • false – замена пакета его более старой версией запрещена;

  • true – разрешено заменить пакет его более старой версией.

Значение по умолчанию: false.

allowerasing#

Удаление установленных пакетов для разрешения конфликтов зависимостей.

Возможные значения:

  • false – удаление пакетов для разрешения зависимостей запрещено;

  • true – удаление пакетов для разрешения зависимостей разрешено.

Значение по умолчанию: false.

autoremove#

Удаление пакетов зависимостей, которые больше не нужны.

Применяется только в следующих случаях:

  • как самостоятельный параметр;

  • совместно со state=absent.

Возможные значения:

  • false – удаление пакетов запрещено;

  • true – удаление пакетов разрешено.

Значение по умолчанию: false.

best#

Использование актуального доступного кандидата на установку или обновление пакета.

Возможные значения:

  • false – если не удастся установить самую новую версию пакета, будет установлена ближайшая к ней.

  • true – должна быть установлена самая новая версия пакета. Если она недоступна, задача завершится ошибкой.

Значение по умолчанию определяется конфигурацией DNF5 и может отличаться в зависимости от дистрибутива.

bugfix#

Обновление только тех пакетов, которые помечены как исправляющие ошибки (bugfix).

Аналогично команде dnf upgrade-minimal, фильтрация по признаку исправления ошибок распространяется и на пакеты, от которых зависят целевые пакеты.

Применяется только совместно со state=latest.

Возможные значения:

  • false – устанавливаются все доступные обновления;

  • true – устанавливаются только обновления для исправления ошибок.

Значение по умолчанию: false.

cacheonly#

Использование только локального кеша. Данные из удаленных репозиториев не загружаются.

Возможные значения:

  • false – разрешает использование удаленных репозиториев;

  • true – работает только с локальным кешем.

Значение по умолчанию: false.

conf_file#

Путь к конфигурационному файлу DNF5 на управляемом узле.

disable_excludes#

Список правил исключений (excludes), определенных в конфигурации DNF5, которые следует отключить на время выполнения задачи, например:

disable_excludes:
  - epel
  - rhel-7-server-extras-rpms

Может быть полезно, если нужно установить или обновить пакеты, которые были явно исключены администратором системы.

Возможные значения:

  • all – отключает все исключения, в том числе глобальные и заданные в репозиториях;

  • main – отключает исключения, заданные в секции [main] конфигурационного файла dnf.conf;

  • <repoid> – отключает исключения для репозиториев с указанными идентификаторами.

disable_gpg_check#

Отключение проверки подписей GPG при установке пакетов. Установка пакетов из репозиториев выполняется так же, как установка из локальной файловой системы или по URL – без проверки подписей GPG.

Важно

Отключение проверки подписей GPG снижает уровень безопасности и может привести к установке непроверенных или вредоносных пакетов.

Применяется только совместно со state=present или state=latest.

Возможные значения:

  • false – подпись проверяется;

  • true – подпись не проверяется.

Значение по умолчанию: false.

disable_plugin#

Список модулей DNF5, которые следует временно отключить для выполнения задачи.

Для корректной работы параметра на управляемом узле должен быть установлен пакет python3-libdnf5 версии не ниже 5.2.0.0.

Примечание

disable_plugin имеет приоритет над enable_plugin. Это значит, что если модуль указан в значениях обоих параметров, то он будет отключен.

Значение по умолчанию: [] (пустой список).

disablerepo#

Список идентификаторов репозиториев, которые следует отключить на время выполнения задачи, например:

disablerepo:
  - epel
  - rhel-7-server-extras-rpms

Значение по умолчанию: [] (пустой список).

download_dir#

Каталог для загрузки пакетов.

Применяется только совместно с download_only=true.

download_only#

Загрузка пакетов без их последующей установки.

Возможные значения:

  • false – загрузка и установка;

  • true – только загрузка.

Значение по умолчанию: false.

enable_plugin#

Список модулей DNF5, которые следует временно включить для выполнения задачи.

Для корректной работы параметра на управляемом узле должен быть установлен пакет python3-libdnf5 версии не ниже 5.2.0.0.

Примечание

disable_plugin имеет приоритет над enable_plugin. Это значит, что если модуль указан в значениях обоих параметров, то он будет отключен.

Значение по умолчанию: [] (пустой список).

enablerepo#

Список идентификаторов репозиториев, которые следует включить на время выполнения задачи, например:

enablerepo:
  - epel
  - rhel-7-server-extras-rpms

Значение по умолчанию: [] (пустой список).

exclude#

Список пакетов, которые следует исключить на время выполнения задачи, например:

exclude:
  - php
  - php-common

Применяется только совместно со state=present или state=latest.

Значение по умолчанию: [] (пустой список).

install_repoquery#

Внимание

Параметр install_repoquery не влияет на поведение модуля и фактически является заглушкой, добавленной для совместимости с предыдущими версиями Ansible.

Запрос информации о зависимостях, версиях пакетов, разрешений групп и так далее.

  • false – запрет использования repoquery;

  • true – использование repoquery при необходимости.

Значение по умолчанию: true.

install_weak_deps#

Установка пакетов слабых (weak) зависимостей.

Возможные значения:

  • false – установка слабых зависимостей запрещена;

  • true – установка слабых зависимостей разрешена.

Значение по умолчанию: true.

installroot#

Альтернативный корневой каталог для установки пакетов.

Поведение модуля с использованием данного параметра аналогично запуску команды chroot <root> dnf. Отличительной особенностью installroot является возможность работы DNF до создания самого окружения chroot.

Значение по умолчанию: /.

list#

Вывод информации о пакетах, аналогично команде dnf list.

Примечание

Параметр не является идемпотентным: он не изменяет состояние системы и не сохраняет результат.

Используется только для запуска отдельных (ad-hoc) команд с помощью утилиты ansible. Использование в сценариях не допускается.

Вместо параметра list рекомендуется использовать модуль ansible.builtin.package_facts.

lock_timeout#

Внимание

Параметр lock_timeout не влияет на поведение модуля и фактически является заглушкой, добавленной для совместимости с модулем ansible.builtin.dnf.

Период ожидания снятия блокировки БД DNF5 в секундах.

Иногда блокировка бывает временной, а эта настройка позволяет модулю предпринять дополнительные попытки в течение указанного периода.

Значение по умолчанию: 30.

name, pkg#

Список названий пакетов, например:

name:
  - httpd
  - nginx >= 1.14.1

Поддерживаемые формы записи:

Форма записи

Пример выражения

Простое название пакета

httpd

С указанием версии

httpd-2.4.6-90.el7

С операторами сравнения

nginx >= 1.14.1

Примечание

Обрамление оператора сравнения пробелами обязательно.

Путь к локальному файлу RPM

/tmp/mypackage.rpm

Путь к бинарному файлу, который предоставляется устанавливаемым пакетом

/usr/bin/htpasswd

URL-адрес

https://example.com/mypackage.rpm

При state=latest параметр поддерживает значение *, эквивалентное выполнению команды dnf -y update (обновление всех установленных пакетов).

Значение по умолчанию: [] (пустой список).

nobest#

Разрешение использования не самой последней версии пакета при установке или обновлении.

Противоположность параметру best.

Возможные значения:

  • false — предпочтение отдается самой новой доступной версии;

  • true — допускается использование более старой версии, если она доступна.

Значение по умолчанию определяется конфигурацией DNF5 и может отличаться в зависимости от дистрибутива.

releasever#

Альтернативная версия дистрибутива, которая будет использоваться при установке пакетов. Значение этого параметра на время выполнения задачи заменяет значение переменной $releasever в конфигурации DNF5 и URL-адресах репозиториев.

Например, releasever=9 позволит установить пакеты, предназначенные для версии 9 используемой ОС, даже если сейчас система работает под другой версией.

Полезно при сборке образов, создании контейнеров или тестировании пакетов в различных версиях ОС.

security#

Обновление только тех пакетов, которые помечены как обновления безопасности. Аналогично команде dnf upgrade-minimal, фильтрация по признаку обновления безопасности распространяется и на зависимости целевых пакетов.

Применяется только совместно со state=latest.

Возможные значения:

  • false – устанавливаются все доступные обновления;

  • true – устанавливаются только обновления, связанные с безопасностью.

Значение по умолчанию: false.

skip_broken#

Вызов ошибки при недоступности пакетов или установке пакетов со сломанными зависимостями. Использование модуля с этим параметром эквивалентно запуску dnf с аргументом --skip-broken.

Возможные значения:

  • false – при ошибках зависимостей задача завершается с ошибкой;

  • true – проблемные пакеты игнорируются, выполнение продолжается.

Значение по умолчанию: false.

sslverify#

Проверка TLS-сертификатов репозиториев.

Полезно при работе с внутренними зеркалами, использующими самоподписанные сертификаты.

Возможные значения:

  • false – проверка TLS-сертификатов отключена;

  • true – TLS-сертификаты проверяются.

Значение по умолчанию: true.

state#

Требуемое состояние пакета.

Возможные значения:

  • present – установлена любая версия пакета. Если пакет уже существует в системе, он не будет обновлен до последней версии.

  • installed – аналог present (поддерживается для совместимости).

  • latest – если пакет не установлен, будет установлена его самая новая версия. Если пакет уже установлен, он будет обновлен до самой новой версии.

  • absent – пакет не установлен.

  • removed – аналог absent (поддерживается для совместимости).

Значение по умолчанию: absent если autoremove=true и present во всех остальных случаях.

update_cache, expire-cache#

Проверка актуальности кеша. Если кеш устарел, то модуль обновит его.

Применяется только совместно со state=present или state=latest.

Возможные значения:

  • false – используется существующий кеш;

  • true – обновление кеша перед выполнением задачи.

Значение по умолчанию: false.

update_only#

Обновление уже установленных пакетов. Новые пакеты установлены не будут.

Применяется только совместно со state=present или state=latest.

Возможные значения:

  • false – допускается установка новых пакетов;

  • true – устанавливаются только обновления для уже установленных пакетов.

Значение по умолчанию: false.

validate_certs#

Внимание

В DNF5 проверка сертификатов выполняется средствами самого DNF5, а не Ansible. Параметр validate_certs не влияет на поведение модуля и фактически является заглушкой, добавленной для совместимости с модулем ansible.builtin.dnf.

Проверка сертификатов TLS при загрузке пакетов по протоколу HTTPS.

Возможные значения:

  • false – проверка отключена (значение игнорируется в DNF5);

  • true – проверка сертификатов выполняется.

Значение по умолчанию: true.

Возвращаемые значения#

В этом списке указаны только возвращаемые значения, специфичные для модуля ansible.builtin.dnf5.

  • failures – список ошибок, возникших при выполнении транзакций DNF5.

    Условия: возвращается при ошибках.

  • msg – дополнительная информация о результате выполнения модуля.

    Условия: возвращается всегда.

  • rc – код возврата.

    Возможные значения:

    • 0 – успешное завершение;

    • 1 – ошибка выполнения.

    Условия: возвращается всегда.

  • results – список результатов выполнения транзакции DNF5.

    Условия: возвращается при успешном выполнении.

Атрибуты#

Атрибуты определяют функции Ansible, которые может использовать модуль.

Атрибут

Описание

action

Модуль имеет соответствующие расширения действий (action plugin) ansible.builtin.dnf и ansible.builtin.package, которые выполняют работу на управляющем узле.

async

Модуль не поддерживает асинхронное выполнение.

bypass_host_loop

Модуль не выполняется как глобальная задача. Для каждого узла выполняется отдельный цикл с учетом всех ограничений.

check_mode

Модуль работает в режиме проверки (check_mode) в полном объеме. Режим проверки позволяет узнать, что произойдет с пакетами при выполнении заданий.

diff_mode

Модуль поддерживает режим сравнения (diff_mode) в полном объеме и возвращает подробную информацию о сделанных изменениях.

platform

Модуль поддерживает только Red Hat Enterprise Linux.

Примеры#

Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.

Установка одного пакета#

Следующий пример описывает установку пакета:

---
- name: Install htop package
  ansible.builtin.dnf5:
    name: htop
    state: present

Удаление нескольких пакетов#

Следующий пример описывает удаление двух пакетов:

---
- name: Remove nano and mc packages
  ansible.builtin.dnf5:
    name:
      - nano
      - mc
    state: absent

Установка последней версии пакета с указанием releasever#

Следующий пример описывает установку последней версии пакета openssh с использованием репозитория другой версии системы:

---
- name: Install latest version of openssh package with releasever=9
  ansible.builtin.dnf5:
    name: openssh
    state: latest
    releasever: 9

Отключение и включение модулей#

Следующий пример описывает установку пакета с управлением загрузкой модулей:

---
- name: Enable one plugin, disable another and install package mytool
  ansible.builtin.dnf5:
    name: mytool
    state: present
    disable_plugin: subscription-manager
    enable_plugin: copr

Отключение установки слабых зависимостей#

Следующий пример описывает установку пакета nginx без слабых зависимостей:

---
- name: Install GNINX without weak dependencies
  ansible.builtin.dnf5:
    name: nginx
    state: present
    install_weak_deps: false

Обновление только установленных пакетов#

Следующий пример описывает обновление пакетов bash и coreutils, если они установлены в системе:

---
- name: Upgrade installed package
  ansible.builtin.dnf5:
    name:
      - bash
      - coreutils
    state: latest
    update_only: true

Использование альтернативного конфигурационного файла#

Следующий пример описывает установку пакета zsh с использованием альтернативного конфигурационного файла DNF5:

---
- name: Install ZSH with custom dnf5 settings file
  ansible.builtin.dnf5:
    name: zsh
    state: present
    conf_file: /etc/dnf/dnf.conf.test

Отключение проверки TLS-сертификатов#

Следующий пример описывает установку пакета nginx с отключением проверки сертификатов:

---
- name: Install NGINX without checking TLS certificates
  ansible.builtin.dnf5:
    name: nginx
    state: present
    validate_certs: false