dnf#

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

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

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

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

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

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

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

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

Удаление групп пакетов (именованных наборов связанных пакетов, например, «Development Tools») не будет работать, если их установка выполнялась с помощью Ansible. Это связано с тем, что API dnf, используемое в Ansible, не помечает такие группы как установленные. В результате при попытке удаления модуль не может определить, что группа установлена, и ничего не делает.

Параметры#

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

allow_downgrade#

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

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

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

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

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

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

allowerasing#

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

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

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

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

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

autoremove#

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

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

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

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

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

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

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

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

bugfix#

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

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

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

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

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

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

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

cacheonly#

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

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

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

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

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

conf_file#

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

disable_excludes#

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

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#

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

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

disablerepo#

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

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

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

download_dir#

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

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

download_only#

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

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

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

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

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

enable_plugin#

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

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

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#

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

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

Значение по умолчанию: 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 (обновление всех установленных пакетов).

Примечание

При использовании модуля в цикле (loop) каждый пакет обрабатывается отдельно. Для повышения производительности рекомендуется передавать весь список пакетов напрямую через параметр name.

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

nobest#

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

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

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

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

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

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.

use_backend#

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

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

  • auto – автоматический выбор обработчика на основе факта pkg_mgr.

  • dnf – модуль ansible.builtin.dnf.

  • dnf4 – синоним dnf.

  • dnf5 – модуль ansible.builtin.dnf5.

  • yum – синоним для auto.

    Примечание

    В предыдущих версиях Ansible при указании use_backend=yum в качестве пакетного менеджера действительно использовался YUM. В актуальных версиях значение yum сохраняется для обратной совместимости, но работает как auto.

  • yum4 – синоним для dnf.

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

validate_certs#

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

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

  • false – проверка отключена.

    Предупреждение

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

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

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

Атрибуты#

Атрибуты определяют функции 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.

Примеры#

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

Установка пакета с минимальной версией#

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

---
- name: Установить httpd версии 2.4 или выше
  ansible.builtin.dnf:
    name: httpd >= 2.4
    state: present

Установка пакета по URI#

Установка пакета после загрузки по указанному URI:

---
- name: Установить пакет nginx-release с удаленного репозитория
  ansible.builtin.dnf:
    name: http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    state: present

Установка пакета из локального файла#

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

---
- name: Установить RPM nginx-release из локального файла
  ansible.builtin.dnf:
    name: /usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    state: present

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

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

---
- name: Установить пакет, предоставляющий /usr/bin/cowsay
  ansible.builtin.dnf:
    name: /usr/bin/cowsay
    state: present

Автоматическое удаление неиспользуемых зависимостей#

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

---
- name: Автоматически удалить неиспользуемые зависимости
  ansible.builtin.dnf:
    autoremove: true

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

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

---
- name: Удалить httpd без удаления зависимостей
  ansible.builtin.dnf:
    name: httpd
    state: absent
    autoremove: false

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

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

---
- name: Обновить все пакеты в системе
  ansible.builtin.dnf:
    name: "*"
    state: latest

Установка пакета из дополнительного репозитория#

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

---
- name: Установить httpd из репозитория testing
  ansible.builtin.dnf:
    name: httpd
    state: present
    enablerepo: testing

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

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

---
- name: Обновить htop или nginx, если они установлены
  ansible.builtin.dnf:
    name:
      - htop
      - nginx
    state: latest
    update_only: true