В существующем проекте я заменяю сценарий подготовки bash на ansible - сначала через Vagrant, а затем развертываю его для промежуточных / продвинутых серверов после того, как устранены изломы.
Эта проблема...
Согласно доступным документам при приоритете переменных group_vars должен переопределять переменные роли, но я вижу обратное.
Соответствующие файлы ...
Ниже приводится отрывок из моего Vagrantfile
(в корне проекта):
config.vm.provision "ansible" do |ansible|
ansible.playbook = "app/config/provision/provision.yml"
end
Я указываю его на playbook несколькими подкаталогами вниз, так как я работаю в существующей кодовой базе с ее собственными практиками и не могу оставлять доступный материал загроможденным в корне. Рассматриваемый сценарий:
# app/config/provision/provision.yml
---
- hosts: all
gather_facts: yes
sudo: true
roles:
- apache
- php
post_tasks:
- debug: var=vagrant_ansible_test_loading_vars
- debug: var=apache_listen_ports
Обратите внимание на операторы отладки для двух переменных, оба из которых определены в файле group_vars вместе с playbook:
# app/config/provision/group_vars/all
---
vagrant_ansible_test_loading_vars: "lorem ipsum"
apache_listen_ports:
- 80
- 8080
Роль apache, которую я использую, определяет значения по умолчанию (которые должны иметь НАИМЕНЬШИЙ приоритет):
# app/config/provision/roles/apache/defaults/main.yml
---
apache_listen_ports: [ 80, 8080 ]
Эта же роль также определяет vars (которые должны иметь ВТОРОЙ самый низкий приоритет):
# app/config/provision/roles/apache/vars/main.yml
---
apache_listen_ports: [ 80 ]
(Неожиданный) результат
И все же после vagrant up
я получаю следующее:
TASK: [debug var=vagrant_ansible_test_loading_vars] ***************************
ok: [default] => {
"vagrant_ansible_test_loading_vars": "lorem ipsum"
}
TASK: [debug var=apache_listen_ports] *****************************************
ok: [default] => {
"apache_listen_ports": [
80
]
}
Первая определяемая переменная, имеющая исходное значение, сообщает мне, что мой файл group_vars загружается. Вторая переменная была переопределена из значения group_vars, с (по-видимому) значением из переменных ролей.