Согласно главе «Лучшие практики» в документации Ansible у меня есть отдельные файлы инвентаризации для моей среды разработки и производственной среды. Хотя в обеих средах установлен один и тот же программный стек, есть некоторые различия: задания cron устанавливаются только на производственных узлах, символические ссылки на общие папки VirtualBox должны существовать только в среде разработки. В настоящее время я использую роль разработчика и продакшн в дополнение к "обычным" и импортирую их main.yml
в зависимости от inventory_hostname
переменная.
Это кажется неуклюжим, потому что теперь есть много папок и файлов только для нескольких дополнительных задач, а использование inventory_hostname
различать среду разработки и рабочую среду нарушает принцип DRY, потому что, находимся ли мы в разработке или производстве, теперь решается выбором файла инвентаризации и inventory_hostname
переменная. Есть ли более элегантный способ справиться с этим?
Если вы используете https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#alternative-directory-layout вы можете поставить переменную env
в dev / group_vars / all.yml и prod / group_vars / all.yml.
Если нет, вы можете добавить это в конец файла инвентаря:
[all:vars]
env=foo