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/htpasswdURL-адрес
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 plugin) ansible.builtin.dnf и ansible.builtin.package, которые выполняют работу на управляющем узле. |
|
Модуль не поддерживает асинхронное выполнение. |
|
Модуль не выполняется как глобальная задача. Для каждого узла выполняется отдельный цикл с учетом всех ограничений. |
|
Модуль работает в режиме проверки ( |
|
Модуль поддерживает режим сравнения ( |
|
Модуль поддерживает только 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