Я использую Ansible 2.0.0.2
.
У меня есть такой инвентарный файл:
[webproxy]
testserver
[database]
testserver
[application]
testserver
[testing:children]
webproxy
database
Я запускаю роли из сборников пьес:
---
- hosts: application
become: true
roles:
- application
Я определяю переменные для среды тестирования в group_vars/testing
. У меня есть роли webproxy
, database
и application
.
поскольку application
группа не входит в testing
группа, которую я ожидал бы запустить application
роль не удалось, потому что я определил обязательные переменные только для группы тестирования. На самом деле работает application.yaml
работает, он может использовать переменные, определенные в group_vars/testing
. Это правильное поведение?
В testing
Кажется, что группа имеет хоть какой-то эффект, потому что, если я полностью удалю ее из файла инвентаризации, выполнение ролей приложения завершится ошибкой из-за неопределенных переменных, как и ожидалось.
Являются group_vars
должен так работать? Может быть, это вызвано тем, что я устанавливаю роли на одном хосте? (У меня сейчас нет доступа к нескольким машинам, поэтому я не могу тестировать, когда у каждой роли есть собственная машина.)
Я читал документацию по Ansible, такую как Групповые vars doc но не нашли на это ответа.
Являются
group_vars
должен так работать?
Да.
Может быть, это вызвано тем, что я устанавливаю роли на одном хосте?
Да. Факты привязаны к хозяевам, а не к группам.
Это также означает, что одни и те же значения переменных, определенные в нескольких group_vars, будут перезаписаны.