apt#
Модуль ansible.builtin.apt управляет системными пакетами в дистрибутивах Linux на базе Debian, в том числе Astra Linux Special Edition.
Особенности работы#
Для корректной работы модуля на управляемом узле должны быть установлены следующие пакеты:
python-apt(при использовании Python 2);python3-apt(при использовании Python 3);aptitude(версия не выше 2.4).
Если активный интерпретатор Python не сможет импортировать модуль python-apt или python3-apt, расширение попытается сделать это со всеми доступными в системе интерпретаторами.
Если нужные модули по-прежнему не будут доступны, ansible.builtin.apt попытается их установить, после чего перезапустит задачу, выбрав интерпретатор, в котором импорт будет происходить без ошибок.
Утилита apt-get позволяет использовать для установки пакетов совпадения их названий с регулярными выражениями.
Из-за опечаток при составлении таких выражений могут быть установлены не те пакеты, которые нужны.
Поскольку запросы и предупреждения при этом не выводятся, модуль ansible.builtin.apt запрещает использование регулярных выражений при указании названий пакетов.
Вместо этого для получения аналогичной функциональности используйте явные шаблоны fnmatch.
При использовании директивы loop каждый пакет обрабатывается индивидуально.
Для повышения эффективности вместо использования loop укажите список пакетов в значении параметра name.
Параметры#
Модуль принимает следующие параметры:
- allow_change_held_packages#
Изменение версии пакета, находящегося в списке фиксированных пакетов (hold list) менеджера APT.
Возможные значения:
false– изменение версии запрещено;true– изменение версии разрешено.
Значение по умолчанию:
false.
- allow_downgrade, allow-downgrade, allow_downgrades, allow-downgrades#
Запуск утилиты
aptс аргументом--allow-downgrade, позволяющим заменить пакет его более старой версией.Использование параметра
allow_downgradeсо значениемtrueделает модульansible.builtin.aptнеидемпотентным. В результате выполнения задачи список фактически установленных пакетов может отличаться от заданного в параметрах.Значение параметра учитывается только при использовании утилиты
apt. Если обнаружена утилитаaptitudeили явно задано ее использование (force_apt_get=false), значениеallow_downgradeигнорируется.Возможные значения:
false– замена пакета его более старой версией запрещена;true– разрешено заменить пакет его более старой версией.
Значение по умолчанию:
false.
- allow_unauthenticated, allow-unauthenticated#
Разрешение на установку непроверенных пакетов. Эта настройка может быть полезна при развертывании окружений, созданных с использованием собственной инфраструктуры
apt-key.Значение параметра учитывается только в том случае, когда значение параметра
stateравноinstallилиpresent.Возможные значения:
false– запрещено устанавливать непроверенные пакеты;true– установка непроверенных пакетов разрешена.
Значение по умолчанию:
false.
- autoclean#
Очистка локального хранилища от пакетов, которые больше нельзя загрузить.
Возможные значения:
false– не очищать;true– очистить.
Значение по умолчанию:
false.
- autoremove#
Удаление пакетов зависимостей, которые больше не нужны, за исключением
build-dep.Возможные значения:
false– не удалять пакеты ненужных зависимостей;true– удалить пакеты ненужных зависимостей.
Значение по умолчанию:
false.
- cache_valid_time#
Обновление списка доступных пакетов только в том случае, когда с момента предыдущего обновления прошло больше указанного количества секунд. При значении
0список доступных пакетов обновляется в любом случае.Важно
Установка значения параметра
cache_valid_timeприводит к автоматической установке значенияyesдля параметраupdate_cache.Значение по умолчанию:
0.
- clean#
Запуск эквивалента команды
apt-get cleanдля очистки локального репозитория от загруженных файлов пакетов. Удаляется все, кроме файлов блокировки в каталогах/var/cache/apt/archives/и/var/cache/apt/archives/partial/.Возможные значения:
false– не очищать;true– очистить.
Значение по умолчанию:
false.
- deb#
Путь к файлу DEB-пакета или прямая ссылка на его загрузку.
Если путь начинается со строки
://, Ansible попытается перед установкой загрузить DEB-пакет с указанного сервера.Примечание
Для распаковки управляющего файла DEB-пакета требуется наличие в системе пакета
xz-utils.
- default_release, default-release#
Запуск утилиты
aptс аргументом-t, устанавливающей приоритет указанного репозитория.При использовании этого параметра для репозитория неявно задается приоритет
990.
- dpkg_options#
Опции
dpkgпри вызовеapt.Список опций задается одной строкой через запятую.
Значение по умолчанию:
force-cofndef,force-confold.Эта строка соответствует вызову
aptсо следующими параметрами:-o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold"
- fail_on_autoremove#
Вызов
aptс аргументом--no-remove.При значении
trueудаление любого пакета приводит к ошибке выполнения задачи.Значение параметра учитывается в следующих случаях:
Значение параметра
stateне равноabsent.Используется утилита
apt.Если обнаружена утилита
aptitudeили явно задано ее использование (force_apt_get=false), значениеfail_on_autoremoveигнорируется.
Возможные значения:
false– удаление пакетов не считается ошибкой;true– удаление пакетов считается ошибкой.
Значение по умолчанию:
false.
- force#
Вызов
apt-getс аргументом--force-yes.Этот параметр отключает проверку подписей пакетов и сертификатов веб-сервера, с которого они загружаются.
Этот параметр не является эквивалентом запуска
apt-getс параметром-f.Предупреждение
Использование аргумента
--force-yesнебезопасно, так как потенциально может вывести из строя вашу систему. Подробности см. во встроенной справке:man apt-getВозможные значения:
false– без аргумента--force-yes;true– с аргументом--force-yes.Примечание
При значении
trueпараметрамallow_unauthenticatedиallow_downgradeавтоматически присваивается значениеyes.
Значение по умолчанию:
false.
- force_apt_get#
Принудительное использование
apt-getвместоaptitude.Возможные значения:
false– использоватьaptitudeилиaptпри их наличии;true– использоватьapt-getв любом случае.
Значение по умолчанию:
false.
- install_recommends, install-recommends#
Управление установкой рекомендуемых пакетов.
В отличие от рекомендуемых, предлагаемые пакеты никогда не устанавливаются.
Возможные значения:
true– установка рекомендуемых пакетов;false– без установки рекомендуемых пакетов, аналогично вызовуaptс аргументом--no-install-recommends.
Значение по умолчанию: Ansible использует настройки, заданные в ОС.
- lock_timeout#
Период ожидания снятия блокировки БД менеджера APT в секундах.
Иногда блокировка бывает временной, а эта настройка позволяет модулю предпринять дополнительные попытки в течение указанного периода.
Значение по умолчанию:
60(1 минута).
- name, package, pkg#
Список названий пакетов с указанием версии (
python3=3.11) или без нее (python3). При указании названий пакетов и их версий допускается использовать подстановочный символ*.Если указана точная версия пакета, неявно используется приоритет
1001.Важно
Не используйте одинарные и двойные кавычки при указании версии пакета.
- only_upgrade#
Обновление пакета, если он уже установлен.
Возможные значения:
false– ничего не делать, если пакет уже установлен;true– обновить пакет до более новой версии при ее наличии.
Значение по умолчанию:
false.
- policy_rc_d#
Принудительное указание кода возврата при выполнении сценария
policy-rc.d. Например, при значении101установка пакета не приводит к запуску соответствующей службы.Если файл
/usr/sbin/policy-rc.dуже существует:Перед установкой пакета будет создана резервная копия файла
/usr/sbin/policy-rc.d.После установки пакета содержимое
/usr/sbin/policy-rc.dбудет восстановлено из резервной копии.
При значении
nullфайл/usr/sbin/policy-rc.dне создается и не изменяется.Примечание
Во многих случаях при установке пакета с помощью
aptсвязанная служба запускается автоматически. Некоторые дистрибутивы позволяют управлять этим механизмом. Например, при установке PostgreSQL версии 9.5 в Debian 9 создание исполняемого сценария/usr/sbin/policy-rc.d, возвращающего код101, предотвращает запуск службы PostgreSQL после установки.
- purge#
Принудительная очистка конфигурационных файлов пакета при
state=absentилиautoremove=yes.Возможные значения:
false– сохранить конфигурационные файлы пакета;true– вместе с пакетом удалить и его конфигурационные файлы.
Значение по умолчанию:
false.
- state#
Требуемое состояние пакета.
Возможные значения:
absent– пакет не установлен.build-dep– установлен пакет и другие пакеты, необходимые для его сборки.latest– если пакет не установлен, будет установлена его самая новая версия. Если пакет уже установлен, он будет обновлен до самой новой версии.present– установлена любая версия пакета.fixed– установка пакета привела к поломке зависимостей, но их нужно исправить.
Значение по умолчанию:
present.
- update_cache, update-cache#
Вызов эквивалента команды
apt-get updateперед выполнением операций.Возможные значения:
false– не обновлять список доступных пакетов;true– обновить список доступных пакетов.
Значение по умолчанию:
false.
- update_cache_retries#
Ограничение на количество попыток обновить список доступных пакетов.
Значение по умолчанию:
5.
- update_cache_retry_max_delay#
Ограничение по времени на попытки обновить список доступных пакетов.
Период между попытками увеличивается экспоненциально пока не достигнет указанного значения в секундах.
Значение по умолчанию:
12.
- upgrade#
Способ обновления системы.
Важно
Этот параметр не позволяет обновлять отдельные пакеты. Для обновления отдельных пакетов используйте параметр
stateсо значениемlatest.По умолчанию для обновления системы используется утилита
aptitude. Если она недоступна, используетсяapt-get.Возможные значения:
dist:apt-get dist-upgradefull:aptitude full-upgradeno– не обновлять.safe,yesилиtrue:aptitude self-upgrade
Значение по умолчанию:
no.
Возвращаемые значения#
В этом списке указаны только возвращаемые значения, специфичные для модуля ansible.builtin.apt.
cache_update_time– время последнего обновления списка доступных пакетов или0, если не удалось определить.Условия: успешное завершение и некоторые случаи.
cache_updated– статус последнего обновления списка доступных пакетов:true– успешно;false– обнаружены ошибки.
Условия: успешное завершение и некоторые случаи.
stderr– ошибки в работеapt.Условия: успешное завершение или по необходимости.
stdout– выводapt.Условия: успешное завершение или по необходимости.
Атрибуты#
Атрибуты определяют функции Ansible, которые может использовать модуль.
Атрибут |
Описание |
|---|---|
|
Модуль работает в режиме проверки ( |
|
Модуль поддерживает режим сравнения ( |
|
Модуль поддерживает только дистрибутивы Linux на базе Debian. |
Примеры#
Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.
Установка веб-сервера Apache2#
Следующий пример демонстрирует установку пакета apache2:
---
- name: Install Apache2
ansible.builtin.apt:
name: apache2
state: present
Обновление репозиториев и установка пакета screen#
Следующий пример демонстрирует обновление списка доступных пакетов и установку утилиты GNU Screen:
---
- name: Install GNU Screen
ansible.builtin.apt:
name: screen
update_cache: yes
Удаление пакета без удаления конфигурационных файлов#
Следующий пример демонстрирует удаление пакета nginx без удаления его конфигурационных файлов:
---
- name: Remove NGINX
ansible.builtin.apt:
name: nginx
state: absent
Удаление пакета и его конфигурационных файлов#
Следующий пример демонстрирует удаление пакета nginx и его конфигурационных файлов:
---
- name: Purge NGINX
ansible.builtin.apt:
name: nginx
state: purge
Установка нескольких пакетов#
Следующий пример демонстрирует установку пакетов, необходимых для работы некоторых аппаратных токенов:
---
- name: Install packages for token's
ansible.builtin.apt:
name:
- krb5-pkinit
- libccid
- libccid
- libengine-pkcs11-openssl1.1
- libpam-krb5
- libpcsclite1
- opensc
- pcsc-tools
- pcscd
Установка пакета указанной версии#
Следующий пример демонстрирует установку Python 3 версии не выше 3.11.2:
---
- name: Install Python 3.11
ansible.builtin.apt:
name: python3.11<=3.11.2
Установка пакета с понижением версии#
Следующий пример демонстрирует установку пакета с разрешением понижения версии:
---
- name: Force install package with allow downgrade
ansible.builtin.apt:
name: nodejs=18.19.0
state: present
allow_downgrade: yes
Установка пакета с проверкой на наличие конфликтов#
Следующий пример демонстрирует установку пакета только в том случае, если он не будет конфликтовать с другими пакетами. При наличии конфликтов установка будет прервана:
---
- name: Install package with ensuring conflicted packages will not be removed
ansible.builtin.apt:
name: emacs-gtk
state: latest
fail_on_autoremove: yes
Установка пакета без рекомендуемых пакетов#
Следующий пример демонстрирует установку только основных зависимостей пакета, без рекомендуемых и предлагаемых пакетов:
---
- name: Install OpenJDK 17 JRE without recommend packages
ansible.builtin.apt:
name: openjdk-17-jre
state: latest
install_recommends: no
Обновление всех пакетов до последних версий#
Следующий пример демонстрирует обновление всех пакетов до последних версий:
---
- name: Update all packages to latest versions
ansible.builtin.apt:
name: "*"
state: latest
Обновление ОС#
Следующий пример демонстрирует обновление ОС с помощью apt-get dist-upgrade:
---
- name: Upgrade OS
ansible.builtin.apt:
upgrade: dist
Предупреждение
Не используйте эту возможность для обновления ОС Astra Linux Special Edition! Подробности см. в статье Справочного центра Fly-astra-update и astra-update - инструменты для установки обновлений.
Обновление списка доступных пакетов как отдельная задача#
Следующий пример демонстрирует обновление списка доступных пакетов как отдельную задачу:
---
- name: Update APT cache
ansible.builtin.apt:
update_cache: yes
Обновление списка доступных пакетов только при его устаревании#
Следующий пример демонстрирует обновление списка доступных только в том случае, если с последнего обновления прошло больше 10 минут:
---
- name: Update APT cache only if the last one is more than 1 hour (3600 seconds) ago
ansible.builtin.apt:
update_cache: yes
cache_valid_time: 3600 # 1 hour
Использование опций dpkg#
Следующий пример демонстрирует передачу опций dpkg в команду управления пакетами:
---
- name: Pass options to dpkg
ansible.builtin.apt:
upgrade: dist
update_cache: yes
dpkg_options: 'force-confold,force-confdef'
Установка пакета из файла#
Следующий пример демонстрирует установку пакета из DEB-файла:
- name: Install package from file
ansible.builtin.apt:
name: /tmp/my-package.deb
Установка пакета по ссылке#
Следующий пример демонстрирует установку пакета, доступного по ссылке:
---
- name: Download and install VirtualBox
ansible.builtin.apt:
deb: https://download.virtualbox.org/virtualbox/7.1.8/virtualbox-7.1_7.1.8-168469~Debian~bookworm_amd64.deb
Установка зависимостей для сборки пакета#
Следующий пример демонстрирует установку зависимостей для сборки пакета nvidia-driver-510:
---
- name: Install nvidia-driver-510 build dependencies
ansible.builtin.apt:
name: nvidia-driver-510
state: build-dep
Удаление неиспользуемых пакетов из списка доступных пакетов#
Следующий пример демонстрирует очистку списка доступных пакетов от неиспользуемых пакетов:
---
- name: Remove useless packages from cache
ansible.builtin.apt:
autoclean: yes
Удаление ненужных зависимостей с сохранением конфигурационных файлов#
Следующий пример демонстрирует удаление ненужных пакетов с сохранением их конфигурационных файлов:
---
- name: Remove dependencies that are no longer required
ansible.builtin.apt:
autoremove: yes
Удаление ненужных зависимостей с очисткой конфигурационных файлов#
Следующий пример демонстрирует удаление ненужных пакетов с очисткой их конфигурационных файлов:
----
- name: Remove dependencies that are no longer required and purge their configuration files
ansible.builtin.apt:
autoremove: yes
purge: true
Запуск аналога apt-get clean как отдельный шаг#
Следующий пример демонстрирует запуск аналога apt-get clean как отдельную задачу:
---
- name: Run the equivalent of apt-get clean as a separate task
ansible.builtin.apt:
clean: yes