apt_repository#

Модуль ansible.builtin.apt_repository управляет репозиториями в дистрибутивах Linux на базе Debian.

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

Для работы модуля на управляемом узле должны быть установлены следующие пакеты:

  • python3-apt (python-apt при использовании интерпретатора Python 2);

  • apt-key или gpg.

Параметры#

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

codename#

Кодовое название дистрибутива при использовании репозитория PPA (Personal Package Archive, личный архив пакетов).

Как правило, значение этого параметра следует указывать при настройке репозитория PPA в дистрибутиве, не входящем в семейство Ubuntu (Astra Linux Special Edition, Debian, Mint и так далее).

filename#

Название файла, создаваемого в каталоге /etc/apt/sources.list.d/. Расширение .list добавляется автоматически.

Значение по умолчанию: вычисляется автоматически на основе URL репозитория.

install_python_apt#

Автоматическая установка пакета python3-apt (python-apt) при его отсутствии.

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

  • true – если пакет отсутствует, модуль вызовет apt-get install для его установки;

  • false – модуль не будет пытаться установить пакет в систему.

Примечание

Этот параметр действует только в том случае, когда Ansible использует на управляемом узле системный интерпретатор Python. В противном случае установите значение false и убедитесь, что нужный пакет установлен для используемого интерпретатора Python.

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

mode#

Режим доступа к файлу, создаваемому в каталоге /etc/apt/sources.list.d/.

Значения могут быть следующих типов:

  • Восьмеричное число, например, 0644 или 0755. Обязательно указывать с ведущим нулем или в кавычках:

    • 0644;

    • '644'.

    Если указать 644, Ansible воспримет это как десятичное число, что приведет к непредсказуемому результату.

    Примечание

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

  • Символьное значение, например, u=rw,g=r,o=r или u+rwx,g+rx,o=r.

  • Специальное значение preserve. При указании этого значения режим доступа к объекту файловой системы не изменяется.

Поведение по умолчанию:

  • если файл или каталог на управляемом узле уже существует, его режим доступа сохраняется;

  • если объект создается заново и параметр mode не задан, режим доступа определяется системным значением umask на удаленном узле.

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

Рекомендуется всегда явно задавать параметр mode, чтобы избежать назначения небезопасных или непредсказуемых прав доступа. См. описание уязвимости CVE-2020-1736.

Значение по умолчанию: определяется настройками ОС (как правило, '0644').

repo#

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

Строка со ссылкой на репозиторий, например:

deb https://dl.astralinux.ru/astra/stable/1.8_x86-64/repository-main/ 1.8_x86-64 main contrib non-free non-free-firmware
state#

Состояние ссылки на репозиторий.

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

  • absent – ссылка на репозиторий не существует ни в одном из .list-файлов;

  • present – ссылка существует в файле /etc/apt/sources.list или одном из .list-файлов в каталоге /etc/apt/sources.list.d/.

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

update_cache, update-cache#

Обновление списка доступных пакетов после изменения списка репозиториев.

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

  • false – список доступных пакетов не обновляется.

  • true – список доступных пакетов обновляется.

    Использование этого значения эквивалентно вызову команды apt-get update.

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

update_cache_retries#

Количество попыток обновить список доступных пакетов. Если за указанное количество попыток сделать этого не удастся, задача завершится с ошибкой.

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

update_cache_retry_max_delay#

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

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

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

validate_certs#

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

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

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

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

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

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

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

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

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

  • repo – строка со ссылкой на репозиторий.

    Условия: возвращается всегда.

  • sources_added – список путей к созданным или измененным файлам .list.

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

  • sources_removed – список путей к удаленным или измененным файлам .list.

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

Атрибуты#

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

check_mode

Модуль поддерживает режим проверки в полном объеме.

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

diff_mode

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

platform

Модуль поддерживает только дистрибутивы Linux на базе Debian.

Примеры#

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

Добавление репозитория Astra Automation#

Следующий пример описывает добавление репозитория Astra Automation с пакетами версии 1.2-upd1 путем создания в каталоге /etc/apt/sources.list.d/ файла с автоматически сгенерированным названием:

- name: Add Astra Automation repository
  ansible.builtin.apt_repository:
    repo: deb https://dl.astralinux.ru/aa/aa-debs-for-alse-1.8 1.2-upd1 main
    state: present

В результате выполнения этой задачи в каталоге /etc/apt/sources.list.d/ создается файл dl_astralinux_ru_aa_aa_debs_for_alse_1_8.list.

Добавление репозитория в указанный файл#

Следующий пример описывает добавление репозитория Astra Automation с пакетами версии 1.2-upd1 путем создания в каталоге /etc/apt/sources.list.d/ файла astra-automation.list:

- name: Add Astra Automation repository to astra-automation.list
  ansible.builtin.apt_repository:
    repo: deb https://dl.astralinux.ru/aa/aa-debs-for-alse-1.8 1.2-upd1 main
    state: present
    filename: astra-automation

В результате выполнения этой задачи в каталоге /etc/apt/sources.list.d/ создается файл astra-automation.list.

Удаление репозитория#

Следующий пример описывает удаление ссылки на расширенный (extended) репозиторий Astra Linux Special Edition из файла /etc/apt/sources.list:

- name: Remove Astra Linux Special Edition extended repository
  ansible.builtin.apt_repository:
    repo: >-
      deb https://download.astralinux.ru/astra/frozen/1.8_x86-64/1.8.1/uu/1/repository-extended/
      1.8_x86-64 main contrib non-free non-free-firmware
    state: absent

Добавление репозитория и соответствующего ему ключа#

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

---
- name: Install GPG key without apt-key
  ansible.builtin.get_url:
    url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
    dest: /etc/apt/keyrings/pgdg.asc

- name: Add link to repository
  ansible.builtin.apt_repository:
    repo: >-
      deb [signed-by=/etc/apt/keyrings/pgdg.asc]
      https://apt.postgresql.org/pub/repos/apt
      bookworm-pgdg main
    state: present
    filename: pgdg

В результате выполнения этого сценария выполняются следующие действия:

  • загрузка ключа GPG и его сохранение в файл /etc/apt/keyrings/pgdg.asc;

  • добавление репозитория PostgreSQL с пакетами для Debian Bookworm.

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

Добавление двух репозиториев#

Следующий пример описывает подключение двух репозиториев и загрузку двух соответствующих им ключей GPG. Обновление списка доступных пакетов при этом выполняется только один раз.

---
- name: Install GPG key for PostgreSQL repository
  ansible.builtin.get_url:
    url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
    dest: /etc/apt/keyrings/pgdg.asc

- name: Add link to PostgreSQL repository
  ansible.builtin.apt_repository:
    repo: >-
      deb [signed-by=/etc/apt/keyrings/pgdg.asc]
      https://apt.postgresql.org/pub/repos/apt
      bookworm-pgdg main
    state: present
    filename: pgdg
    update_cache: false

- name: Install GPG key for NodeSource repository
  ansible.builtin.get_url:
    url: https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key
    dest: /etc/apt/keyrings/nodesource-repo.gpg.key

- name: Add link to NodeJS v22 repository
  ansible.builtin.apt_repository:
    repo: >-
      deb [signed-by=/etc/apt/keyrings/nodesource-repo.gpg.key]
      https://deb.nodesource.com/node_22.x
      nodistro main
    state: present
    filename: nodesources
    update_cache: true