package#

Модуль ansible.builtin.package управляет пакетами в гетерогенных окружениях, когда на разных узлах используются разные менеджеры пакетов. Это позволяет управлять пакетами, используя всего один модуль вместо создания отдельных задач, учитывающих особенности каждого узла, например, с использованием модулей ansible.builtin.dnf и ansible.builtin.apt.

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

Особенности работы модуля ansible.builtin.package:

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

  • Для выбора нужного модуля управления пакетами используются факты, собранные об управляемом узле с помощью модуля ansible.builtin.setup. Если этот модуль не был вызван ранее, ansible.builtin.package вызовет его автоматически.

  • Для управления пакетами на узлах под управлением ОС Windows используйте модуль ansible.windows.win_package.

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

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

Параметры#

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

name#

Обязательный параметр.

Название пакета с указанием версии или без нее.

Способ указания версии пакета зависит от менеджера пакета, установленного на управляемом узле.

Название пакета не «транслируется» в название, соответствующее используемой ОС. Это значит, что, например, если необходимо установить пакет с исходным кодом драйвера PostgreSQL, для ОС на базе Debian Linux нужно использовать значение libpq-dev, а для ОС на базе Red Hat Enterprise Linux – libpq-devel.

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

state#

Обязательный параметр.

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

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

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

  • present – установлена любая версия пакета.

Примечание

Прочие возможные состояния пакета, например, latest и build-dep, можно использовать только в том случае, если их поддерживает модуль управления пакетами, который будет фактически использоваться для настройки управляемого узла.

use#

Требуемый менеджер пакетов, например, apt, aptitude, dnf5 и так далее.

Важно

Используйте значение, отличное от auto, только в том случае, когда автоматическое определение менеджера пакетов по каким-либо причинам не сработало.

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

Атрибуты#

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

Атрибут

Описание

action

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

async

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

bypass_host_loop

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

check_mode

Поддержка режима проверки зависит от используемого модуля управления пакетами.

diff_mode

Поддержка режима сравнения зависит от используемого модуля управления пакетами.

platform

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

Примеры#

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

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

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

---
- name: Install nginx package
  ansible.builtin.package:
    name: nginx
    state: present

Использование переменных#

Следующий пример демонстрирует установку пакета, название которого зависит от значения переменной libpq_package в свойствах узла:

---
- name: Install libpq5-dev package
  ansible.builtin.package:
    name: "{{ libpq_package }}"
    state: present