Как задать общие переменные для нескольких Ansible плейбуков?
В Ansible можно задавать общие переменные для нескольких плейбуков с помощью следующих подходов:
- Использование файла переменных в каталоге
group_vars
илиhost_vars
. - Определение переменных в инвентарном файле.
- Создание общего файла переменных и подключение его с помощью
vars_files
. - Определение переменных в роли.
Давайте рассмотрим каждый способ подробнее:
1. Использование group_vars
и host_vars
Ansible автоматически ищет переменные в каталогах group_vars
и host_vars
, которые находятся в том же каталоге, где и ваш инвентарный файл.
group_vars/all.yml
— переменные, общие для всех хостов и плейбуков.group_vars/group_name.yml
— переменные для конкретной группы хостов.
Пример group_vars/all.yml
:
1 2 3 4 |
# group_vars/all.yml common_var1: "значение1" common_var2: "значение2" |
2. Определение переменных в инвентарном файле
Вы можете определить переменные прямо в инвентарном файле в разделе [all:vars]
, [group_name:vars]
или для конкретного хоста.
Пример инвентарного файла:
1 2 3 4 5 6 7 8 |
[webservers] server1 ansible_host=192.168.1.10 server2 ansible_host=192.168.1.11 [all:vars] common_var1="значение1" common_var2="значение2" |
3. Создание общего файла переменных и подключение с помощью vars_files
Вы можете создать отдельный файл с переменными и подключать его в каждом плейбуке.
Пример файла переменных common_vars.yml
:
1 2 3 4 |
# common_vars.yml common_var1: "значение1" common_var2: "значение2" |
Подключение в плейбуке:
1 2 3 4 5 6 7 8 9 10 11 |
# playbook.yml --- - name: Пример плейбука с общими переменными hosts: all vars_files: - common_vars.yml tasks: - name: Печать общей переменной debug: msg: "{{ common_var1 }}" |
4. Определение переменных в роли
Если у вас есть общие переменные для нескольких плейбуков, которые используют одну или несколько ролей, вы можете определить переменные в роли.
- Поместите их в файл
defaults/main.yml
илиvars/main.yml
внутри директории роли.
Пример defaults/main.yml
в роли:
1 2 3 4 |
# roles/common/defaults/main.yml common_var1: "значение1" common_var2: "значение2" |
Преимущества подходов:
- group_vars и host_vars: Автоматически подгружаются для всех плейбуков, поддерживают структуру по группам и хостам.
- Инвентарный файл: Быстро и удобно для простых конфигураций.
- vars_files: Гибкость и возможность разделения переменных по функциональности.
- Роли: Легко использовать и управлять общими переменными в рамках роли.
Выбор подхода зависит от вашей инфраструктуры и требований к организации кода.
Recommended Posts
Плейбук Ansible по развертыванию haproxy
15.02.2024
Отказоустойчивый кластер Redis + Sentinel
03.02.2024