O que é o equivalente de configuração do Ansible para `--vault-password-file`?


12

De acordo com a ajuda do ansible-playbook, pode-se usar --user=REMOTE_USERpara definir o usuário ssh, mas também pode-se definir ansible_ssh_user: REMOTE_USERnos host-ou group_vars.

Questão

Que variável precisa ser definida no diretório group- ou host_vars para impedir que --vault-password-fileseja definido durante a execução ansible-playbook?

Tentativas

  • Quando ansible_vault_password_file: ~/.vault_pass.txté definido na configuração, a descriptografia falha:

    ERROR! Decryption failed on /path/to/vault
    
  • Nenhuma variável de cofre associada foi encontrada nesta documentação


Btw agora está documentado (da versão 1.7) aqui: docs.ansible.com/ansible/…
Tensibai 30/03

Respostas:


13

Aqui está a definição:

DEFAULT_VAULT_PASSWORD_FILE = get_config(p, DEFAULTS, 'vault_password_file', \
'ANSIBLE_VAULT_PASSWORD_FILE', None, value_type='path')

Isso significa que você coloca no ansible.cfg ou playbook:

vault_password_file: ~/.vault_pass.txt

Ou no seu shell definiu esta variável:

export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt

Deixei o texto do URL intencionalmente para mostrar às pessoas como a observação do código pode ajudar onde falta documentação e onde o código pode ser encontrado facilmente. Mas acho que um hiperlink deve ser suficiente.
Jiri Klouda

Se algo mais falhar, leia a documentação ... e se não houver documentação, leia a fonte ... se você tiver acesso a ela ... e se tiver, verifique se está procurando a versão correta. a única coisa que resta então é ser capaz de entender tudo. PS: os links podem parar de funcionar um dia ...
Pierre.Vriens

@JiriKlouda parece não funcionar, embora tenha sido definido em group_vars/all/vars. export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txtteve que ser executado.
030

Esta é uma variável de configuração. Ele deve estar em ansible.cfg ou equivalente ou no manual.
Jiri Klouda

Também verifiquei especificamente a versão 2.2 que você executa e ela está lá: github.com/ansible/ansible/blob/stable-2.2/lib/ansible/…
Jiri Klouda

2

Você pode definir uma variável de ambiente que ANSIBLE_VAULT_PASSWORD_FILEarmazene o caminho do arquivo de senha do vault. Dessa forma, você não terá o --vault-password-filebotão sempre usar ao executar um manual.

Isso está descrito na documentação do Ansible's Vault, disponível aqui .

Então, adicione export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txtà sua ~/.bash_profilefonte a partir dela e você estará pronto para começar.

Se você precisar de senhas diferentes do Vault para diferentes grupos de hosts, faça o seguinte:

Dentro deste subdiretório, crie dois arquivos denominados vars e vault. Dentro do arquivo vars, defina todas as variáveis ​​necessárias, incluindo as sensíveis. Em seguida, copie todas as variáveis ​​sensíveis para o arquivo do Vault e prefixe essas variáveis ​​com vault_. Você deve ajustar as variáveis ​​no arquivo vars para apontar para as variáveis ​​correspondentes do vault_ e garantir que o arquivo do cofre esteja criptografado no cofre.

Este é um exemplo de abordagem de melhores práticas para gerenciar informações confidenciais por grupo. Mais informações estão disponíveis na documentação da Ansible aqui (o texto acima é copiado de lá).


1
Isso não permitirá uma senha diferente por hosts
Tensibai 29/03

Você está se referindo à senha de conexão? Porque se você faz, o que isso tem em comum com o Ansible Vault?
13dimitar

Eu estava me referindo à senha do cofre, querer fazer diferentes senhas para vários grupos faz sentido (e é a raiz da pergunta até onde eu entendo).
Tensibai 29/03

Eu não entendi dessa maneira. Eu editei minha resposta para incluir esse cenário.
13dimitar

parece melhor. Btw downvote não é minha
Tensibai
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.