os_packages

Ansible роль: os-packages

Установка пакетов с использованием файлов переменных

GitHub Actions GitHub Actions

Когда и почему использовать эту роль

При настройке конфигурации для нескольких систем вам, безусловно, потребуется установить пакеты операционной системы, которые не требуют дополнительной настройки после установки. Например, пакеты такие как build-essential или gcc для сервера сборки. Создавать множество индивидуальных ролей для каждой установки было бы крайне неудобно. Даже если вы не выберете вариант "одна роль на пакет", вы можете оказаться в ситуации, когда у вас есть несколько отдельных списков пакетов, разбросанных по вашим ролям, которые обрабатывают различные детали менеджеров пакетов, и эти списки могут быть трудными для пересечения и актуализации.

Эта роль позволяет вам централизовать ваши списки пакетов в файлах переменных, чтобы они могли легко ссылаться друг на друга. Она работает в гетерогенной среде: если у вас указаны deb_packages, но Ansible не запущен на хосте с установленным apt, то deb_packages просто будут проигнорированы. Условия "when" не требуются.

Не рекомендуется использовать эту роль для установки программного обеспечения, которое требует много конфигурации или другой настройки. Например, такие программы как Nextcloud, NGINX или Apache стоит устанавливать другим способом, так как для них нужна дополнительная настройка (SELinux, конфигурация, правила брандмауэра и т.д.) и им требуется собственная выделенная роль, которая будет обрабатывать все детали развертывания.

Переменные роли

Имя Описание Тип По умолчанию Обязательно
packages_apt_globally_update_cache Указывает, нужно ли выполнить глобальное apt update перед установкой пакетов. boolean true нет
generic_packages Список пакетов, которые будут использовать модуль package в Ansible. Многие пакеты имеют общие и последовательные названия в различных дистрибутивах Linux. Они должны быть в этой переменной. list [] нет
deb_packages Список пакетов, которые используют соответствующий модуль упаковки в зависимости от целевой системы в Ansible для .deb пакетов list [] нет
rpm_packages Список пакетов, которые используют соответствующий модуль упаковки в зависимости от целевой системы в Ansible для .rpm пакетов list [] нет
pacman_packages Список пакетов, которые будут использовать модуль упаковки pacman в Ansible list [] нет
generic_package_specs Список спецификаций пакетов, которые будут использовать модуль package в Ansible. Многие пакеты имеют общие и последовательные названия в различных дистрибутивах Linux. Они должны быть в этой переменной. list [] нет
deb_package_specs Список спецификаций пакетов, которые будут использовать соответствующий модуль упаковки в зависимости от целевой системы в Ansible для .deb спецификаций пакетов list [] нет
rpm_package_specs Список спецификаций пакетов, которые будут использовать соответствующий модуль упаковки в зависимости от целевой системы в Ansible для .rpm спецификаций пакетов list [] нет
pacman_package_specs Список спецификаций пакетов, которые будут использовать модуль упаковки pacman в Ansible list [] нет

Указание зависимостей

Переменные generic_packages, deb_packages, pacman_packages и rpm_packages — это списки пакетов для установки. Это просто списки строк, которые будут гарантированно установлены:

generic_packages:
  - gcc
  - tmux
  - vim

Использование других состояний, кроме present

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

generic_package_specs:
  - name: gcc
    state: latest

Список deb_package_specs дополнительно позволяет указать опцию update_cache:

deb_package_specs:
  - name: gcc
    state: latest
    update_cache: yes

Пример Playbook

- hosts: all
  roles:
    - role: os-packages

Лицензия

Лицензия Apache

О проекте

Install packages using variable files

Установить
ansible-galaxy install chasinglogic/ansible-role-os-packages
Лицензия
apache-2.0
Загрузки
218
Владелец
Linux and FOSS Enthusiast.