пьесы
ansible 2.4.0
config file = None
configured module search path = [u'/Users/szabop/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /Library/Python/2.7/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 2.7.10 (default, Jul 14 2015, 19:46:27) [GCC 4.2.1 Compatible Apple LLVM 6.0
Я импортирую роли и игры из другого каталога, поэтому у меня есть файл ansible.cfg
[defaults]
roles_path = ../../../deployment/playbooks/roles
OSX 10.10.5
Когда я пытаюсь динамически решить, какой файл хранилища я хочу импортировать, используя переменную в vars_files (модульные тесты не должны использовать производственные пароли!) Для импортированных игр, я не могу сделать это с помощью group_vars, host_vars или фактов. установлен в постановке. Я могу использовать только доступный аргумент командной строки.
ansible-playbook -t app_test -i inventories/localhost/local.hosts unit.yml
---
#
# network.yml
#
- name: Setup the networks
hosts: dockerhosts
vars_files:
- demoVars.yml
- "{{ vault_file }}" # this will only be valid if declared on the ansible command line.
roles:
- role: debug # note this will print out a valid {{ vault_file }} in all cases (but comment out the vars_files line or it will error first)
- role: network_setup
options:
internal: "{{ networks.internal }}"
external: "{{ networks.external }}"
nginx: "{{ networks.nginx }}"
tags:
- setup
- standalone
- app_test
# unit.yml
---
- name: create facts used to compose variables later in this playbook
hosts: dockerhosts
vars:
esTmpDir: "/tmp/es"
roles:
- role: unitenv_setup
tags:
- app_test
- import_playbook: ../../../deployment/playbooks/network.yml
Если переменная vault_file
указана в командной строке ansible с помощью --extra-vars
сценарий работает нормально. Он должен работать нормально, если vault_file
задано из файла инвентаризации или установлено как факт в unitenv_setup
, но это не так.
Используя любой метод, кроме командной строки, для установки vault_file
, я получаю следующую ошибку:
PLAY [Setup the networks] *********************************************************************
ERROR! vars file {{ vault_file }} was not found
чрезвычайно подробный режим:
ETA: ran handlers
META: ran handlers
Read vars_file 'demoVars.yml'
skipping vars_file '{{ vault_file }}' due to an undefined variable
Read vars_file 'demoVars.yml'
skipping vars_file '{{ vault_file }}' due to an undefined variable
PLAY [Setup the networks] *********************************************************************
Read vars_file 'demoVars.yml'
ERROR! vars file {{ vault_file }} was not found
Я замечаю, что в моей производственной среде есть что-то сложное, что я не могу передать простым совместным воспроизведением. Во всяком случае, вот попытка воспроизвести.
Привет!
Большое спасибо за отправку в Ansible. Это очень много значит для нас.
Мы считаем, что поданный вами билет неправильно поняли, поскольку одно работает немного иначе, чем указано.
факты, переменные хоста и группы .. в основном любые «связанные с хостом переменные» недоступны для vars_files
, на этом этапе доступны только переменные с ограниченным объемом воспроизведения или дополнительные переменные. Вместо этого используйте задачу include_vars
.
В будущем эта тема может быть более подходящей для списка пользователей, который вы также можете опубликовать здесь, если вам нужна дополнительная помощь по вышеуказанному.
Еще раз спасибо за это и за проявленный интерес к Ansible!
возможно стоит поправить документацию? Не совсем очевидно ...
Самый полезный комментарий
возможно стоит поправить документацию? Не совсем очевидно ...