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