Introdução
Em um IC privado e repositórios de controle de origem como o Gitlab-ce, é possível copiar um ~ / .vault_pass.txt no servidor e deixá-lo usar pelo IC para descriptografar arquivos usando o Ansible.
Problema
Em ICs públicos e repositórios de controle de origem como o Bitbucket, não é possível copiar um ~ / .vault_pass.txt no servidor de ICs.
Discussão
No Bitbucket, é possível definir variáveis criptografadas, mas quando esse arquivo é verificado, as únicas variáveis relacionadas ao VAULT são:
ANSIBLE_ASK_VAULT_PASS
ANSIBLE_VAULT_PASSWORD_FILE
Essas variáveis não são uma opção para resolver o problema, pois quando o ANSIBLE_ASK_VAULT_PASS
conjunto ansible-vault
ainda é solicitado:
user@host $
Vault password:
Quando a mesma senha é inserida, ela pode abrir o arquivo criptografado, mas o objetivo é abrir o arquivo sem precisar de um arquivo ou digitar uma senha em um prompt.
Outra tentativa de resolver o problema estava em execução export ANSIBLE_ASK_VAULT_PASS=<ansible-vault-password>
, mas o modo interativo persiste.
Outra opção é export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt
, mas esse arquivo precisa ser enviado ao repositório, mas os repositórios de controle de origem não devem conter senhas.
Respostas:
--vault-password-file
em vez disso, pode apontar para um script executável que grava no stdout. Esse recurso pouco conhecido deve resolver seu problema.Primeiro, escreva um script simples e executável que imprima uma variável de ambiente do sistema e verifique isso no controle de origem. Em seguida, use o recurso de variável criptografada do Bitbucket para definir essa variável de ambiente como seu segredo do cofre de segurança. Por fim, execute da seguinte maneira:
ansible-playbook site.yml --vault-password-file ./mypass.sh
.Referências:
http://docs.ansible.com/ansible/playbooks_vault.html#running-a-playbook-with-vault
https://groups.google.com/forum/#!topic/ansible-devel/1vFc3y6Ogto
fonte
echo $VAR
por exemplo, e esse var será definido na interface do BitBucket?([Errno 8] Exec format error). If this is not a script, remove the executable bit from the file.
Usando
resultou em:
Com base nesta postagem, o seguinte foi definido nos pipelines de bitbucket:
fonte
Você pode ter um teste configurado que não execute a produção e carregar arquivos diferentes para eles.
Crie um host_vars / localhost / vault que funcione apenas para a instalação de teste local.
Dessa forma, você pode usar uma senha de cofre aberta que funcione apenas para esse cofre de host local.
fonte