os_packages
Ansible роль: os-packages
Установка пакетов с использованием файлов переменных
Когда и почему использовать эту роль
При настройке конфигурации для нескольких систем вам, безусловно, потребуется установить пакеты операционной системы, которые не требуют дополнительной настройки после установки. Например, пакеты такие как 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
Лицензия
ansible-galaxy install chasinglogic/ansible-role-os-packages