Лично я думаю, что ваша структура инвентаря - плохая идея.Я не потворствую наличию серверов PROD и TEST в одном и том же инвентаре, и не вижу для этого веской причины.
Я бы перестроил вашу систему следующим образом:
├── prod
│ ├── ansible.cfg
│ ├── group_vars
│ │ ├── app1
│ │ │ ├── application.yml <- Ancryptes by Ansible Vault prod pass
│ │ │ └── service.yml
│ │ ├── app2
│ │ │ ├── application.yml <- Ancryptes by Ansible Vault prod pass
│ │ │ └── service.yml
├── test
│ ├── ansible.cfg
│ ├── group_vars
│ │ ├── app1
│ │ │ ├── application.yml <- Ancryptes by Ansible Vault prod pass
│ │ │ └── service.yml
│ │ ├── app2
│ │ │ ├── application.yml <- Ancryptes by Ansible Vault prod pass
│ │ │ └── service.yml
И, конечно,, будет два файла хоста:
PROD:
[hosts]
prod_host1
prod_host2
[app1:children]
hosts
[app2:children]
hosts
TEST:
[hosts]
test_host1
test_host2
[app1:children]
hosts
[app2:children]
hosts
В каждом каталоге инвентаря есть файл ansible.cfg
со строками:
inventory = .
vault_password_file = /path/to/vault_password_file
remote_user = ssh_user
ask_pass = True
(Лучше всего, если вы просто скопируете /etc/ansible/ansible.cfg
в каталог инвентаря и измените то, что вам нужно изменить.)
После того, как вы выполните эту настройку, вы перейдете в prod
или каталог test
, и оттуда запустите playbook.Конечно, вам нужно будет указать путь к книгам:
cd prod
ansible-playbook /path/to/playbooks/app_playbook.yml
cd test
ansible-playbook /path/to/playbooks/app_playbook.yml
Поверьте мне, с разделением инвентаря жизнь намного проще.
Удачи!