Назад | Перейти на главную страницу

Ansible: запускать дополнительные задачи для определенного инвентаря

Согласно главе «Лучшие практики» в документации 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