При использовании папок для организации Ansible Projects обычно используем host_vars
Подпапка для хранения переменных, которые принадлежат хостам, объявленным в наших файлах инвентаризации, заканчивая чем -то подобным в наших руках:
. ├── group_vars ├── hosts ├── host_vars │ └── host-01.yml ├── roles │ └── webservers │ ├── files │ ├── tasks │ │ └── main.yml │ └── templates └── webservers.yml
Здесь мы используем Хозяева
Файл как наш инвентарь, который имеет только один хост, Хост-01
и хранение всех его переменных на host_vars/host-01.yml
файл.
Для многих людей этот подход будет работать просто великолепно, с абсолютно ничего плохого в этом. Но по мере того, как наша инфраструктура растет, так и количество переменных, и управление ее может стать немного громоздкой, с двумя основными проблемами:
Со временем все переменные от всех субъектов (например, разные роли) хранятся в одном месте, поэтому это может стать довольно грязным.
Вторая проблема в том, что когда вы используете Ansible Vault Чтобы зашифровать файлы, которые содержат конфиденциальную информацию, например, пароли, у вас есть рабочий процесс, похожий на это:
- Запустить
git тянутся
- Отредактируйте свой файл с помощью
Ansible-Vault Edit $ {file}
- Совершить свои изменения
- Запустить
git push
Но при таком подходе вы должны, что даже не меняете ничего чувствительного, связанного с облоком.
Чтобы решить эти две проблемы, вместо этого вы можете сделать папку внутри host_vars
с именем вашего хоста и внутри него файлами yaml, содержащих ваши переменные. Ansible автоматически объединит их при вызове. Затем используйте хранилище только для файлов, которые имеют конфиденциальную информацию (например, мы предполагаем, что для файла host_vars/host-01/password.yml
). Вот пример:
. ├── group_vars ├── hosts ├── host_vars │ └── host-01 │ ├── main.yml │ └── passwords.yml ├── roles │ └── webservers │ ├── files │ ├── tasks │ │ └── main.yml │ └── templates └── webservers.yml
Вы можете иметь столько файлов YAML, которые вы хотите в папке, и, кстати, вам не нужно называть «main.yml».
Абрасос!
Оригинал: «https://dev.to/stefanomartins/a-better-way-to-work-with-ansible-variables-4m1o»