Я совершенно не понимаю, как управлять несколькими средами (prod / dev) с помощью ansible. Я также использую молекулу для локального тестирования.
Итак, вот мой макет проекта на данный момент.
|----inventories/
| |
| |--dev/
| | |
| | |--group_vars/...
| | |
| | |--host_vars/...
| |
| |--prod/
| |
| |--group_vars/...
| |
| |--host_vars/
| |
| |--my_playbook_hostname_vars.yml
|
|----roles/...
|
|----hosts.yml
|
|----my_playbook.yml
|
Это структура каталогов в соответствии с документом
Теперь у меня есть файл с молекулой, в котором я могу просто связать каталоги разработчиков, как это
# molecule.yml
provisioner:
name: ansible
inventory:
links:
group_vars: ../../../../inventories/dev/group_vars/
host_vars: ../../../../inventories/dev/host_vars/
Таким образом, Molecule отлично работает для локального тестирования с бродячим драйвером, и я также могу настроить его для использования драйвера EC2, например, для тестирования в облаке. Все идет нормально.
Но как мне запустить my_playbook.yml? Когда я использую ansible-playbook my_playbook.yml
, он не знает, где искать вары, поскольку есть две среды. Как я могу сказать Ansible, чтобы он смотрел в разделах inventory / prod / group_vars & inventory / prod / host_vars, а затем разрешал дальнейшие действия через имя хоста и группы, как это определено в hosts.yml, без ущерба для настройки моей молекулы?
Когда я просто устанавливаю group_vars / & host_vars / в корневом каталоге, он работает