apt

Содержание

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 уже существует:

  1. Перед установкой пакета будет создана резервная копия файла /usr/sbin/policy-rc.d.

  2. После установки пакета содержимое /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-upgrade
    
  • full:

    aptitude full-upgrade
    
  • no – не обновлять.

  • safe, yes или true:

    aptitude self-upgrade
    

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

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

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

  • cache_update_time – время последнего обновления списка доступных пакетов или 0, если не удалось определить.

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

  • cache_updated – статус последнего обновления списка доступных пакетов:

    • true – успешно;

    • false – обнаружены ошибки.

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

  • stderr – ошибки в работе apt.

    Условия: успешное завершение или по необходимости.

  • stdout – вывод apt.

    Условия: успешное завершение или по необходимости.

Атрибуты#

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

Атрибут

Описание

check_mode

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

diff_mode

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

platform

Модуль поддерживает только дистрибутивы 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