Você pode usar um comando shell com uma variável base64 para fazer isso.
- vars:
- myvar: "<my_base64_var>"
- name: Create binary file
shell: "echo '{{myvar}}' | base64 -d > /var/tmp/binary.dat"
Eric
Estamos usando o Cofre Ansible para armazenar senhas, chaves privadas para certificados, etc. em nosso repositório Git Ansible Playbook. Todos os nossos dados privados existentes estão em forma de texto, para que possamos armazená-los em variáveis. Estes são então usados em modelos ou com o parâmetro content
do módulo de cópia.
Agora, temos um arquivo Java KeyStore, que infelizmente tem 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 devidamente criptografado enquanto ele está no git, mas disponível quando rodamos ansible-playbook
?
O que eu já tentei sem sucesso:
{{base64_data | b64decode}}
. Leva a muitos EF BF BD
no dump hexadecimal do arquivo resultante. Os três bytes codificam o caractere de substituição Unicode em UTF-8, portanto há um problema em interpretar os dados binários como texto. content="{{base64_data | b64decode}}"
. Ansible reclama com "Uma variável inseriu um novo parâmetro no módulo args." Ao usar aspas simples em vez de aspas duplas, Ansible reclama com "string de argumento de análise de erros" e uma cópia de todos os dados binários, despejados no terminal ... A maneira como fazemos isso para nossa configuração ansible é:
-Nós criptografamos material confidencial individual (um pequeno subconjunto de nosso repositório) usando o link -Nós todos sempre cometemos usando tags de sinal de git -Nós periodicamente verificamos se existem arquivos não assinados
A vantagem do git-crypt é que, como ele depende dos filtros git, a criptografia é transparente. Além disso, você pode dar acesso ao repositório para desenvolvedores sem comprometer o conteúdo criptografado (ele irá ignorar arquivos criptografados se nenhuma chave de decodificação puder ser obtida).
Tags ansible