playbooks
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
Estou importando funções e reproduções de outro diretório, então tenho em ansible.cfg
[defaults]
roles_path = ../../../deployment/playbooks/roles
OSX 10.10.5
Quando tento decidir dinamicamente qual arquivo vault desejo importar usando uma variável em vars_files (testes de unidade não deveriam usar senhas de produção!) Para reproduções importadas, não consigo fazer isso usando group_vars, host_vars ou fatos definido em um jogo de configuração. Só posso usar um argumento de linha de comando ansible.
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
Se a variável vault_file
for especificada na linha de comando ansible usando --extra-vars
o script funcionará perfeitamente. Deve funcionar bem quando vault_file
é definido a partir de um arquivo de inventário ou definido como um fato em unitenv_setup
, mas não
Usando qualquer método além da linha de comando para definir vault_file
, recebo o seguinte erro:
PLAY [Setup the networks] *********************************************************************
ERROR! vars file {{ vault_file }} was not found
modo extremamente detalhado:
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
Observo que há algo complexo em meu ambiente de produção que não consigo encontrar em uma reprodução compartilhável simples. De qualquer forma, aqui está a tentativa de reprodução.
Oi!
Muito obrigado por seu envio para a Ansible. Sinceramente, significa muito para nós.
Acreditamos que o tíquete que você preencheu está sendo um tanto mal interpretado, pois uma coisa funciona de maneira um pouco diferente do que foi declarado.
fatos, host e vars de grupo .. basicamente qualquer 'host associado vars' não está disponível por vars_files
, apenas vars com escopo de jogo ou vars extras estão disponíveis nesse ponto. Use uma tarefa include_vars
invés.
No futuro, este pode ser um tópico mais adequado para a lista de usuários, que você também pode postar aqui se desejar mais ajuda com o acima.
Obrigado mais uma vez por isso e pelo seu interesse na Ansible!
talvez você deva corrigir a documentação? Não exatamente óbvio ...
Comentários muito úteis
talvez você deva corrigir a documentação? Não exatamente óbvio ...