Estamos usando o Ansible Vault para armazenar senhas, chaves privadas para certificados etc. em nosso repositório git do Ansible Playbook. Todos os nossos dados privados existentes estão em forma de texto, para que possamos armazená-los em variáveis. Eles são usados em modelos ou com o content
parâmetro do módulo de cópia.
Agora, temos um arquivo Java KeyStore, que infelizmente possui um formato binário. Como tal, não pode ser armazenado dentro de uma variável - ou pelo menos não sei como fazê-lo. Qual seria a maneira mais fácil de ter nosso arquivo criptografado corretamente enquanto permanece no git, mas disponível durante a execução ansible-playbook
?
O que eu já tentei sem sucesso:
- Codificando o arquivo binário em base64, armazenando os dados codificados em uma variável e usando o módulo de modelo com
{{base64_data | b64decode}}
. Leva a muitosEF BF BD
despejos hexadecimais do arquivo resultante. Os três bytes codificam o caractere de substituição Unicode no UTF-8, portanto, há um problema com a interpretação dos dados binários como texto. - Codificando o arquivo binário em base64, armazenando os dados codificados em uma variável e usando o módulo de cópia com
content="{{base64_data | b64decode}}"
. O Ansible reclama com "Uma variável inseriu um novo parâmetro no módulo args". Ao usar aspas simples em vez de aspas duplas, o Ansible reclama com "erro ao analisar a sequência de argumentos" e uma cópia de todos os dados binários, despejados no terminal ...
Respostas:
Você pode usar um comando shell com uma variável base64 para fazer isso.
Eric
fonte
A maneira como fazemos isso para nossa configuração ansible é:
- Criptografamos material sensível individual (um pequeno subconjunto de nosso repositório) usando https://www.agwa.name/projects/git-crypt/ - Todos sempre confirmamos usando tags de sinal git - Verificamos periodicamente se há arquivos não assinados
A vantagem do git-crypt é que, como se baseia em filtros git, a criptografia é transparente. Além disso, você pode conceder acesso ao repositório aos desenvolvedores sem comprometer o conteúdo criptografado (ele ignorará os arquivos criptografados se nenhuma chave de descriptografia puder ser obtida).
fonte