Como criptografar arquivos binários no Ansible?

9

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:

  • Codificando o arquivo binário em base64, armazenando os dados codificados em uma variável e usando o módulo template com {{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.
  • Codificando o arquivo binário em base64, armazenando os dados codificados em uma variável e usando o módulo copy com 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 ...
por Daniel Seither 10.02.2015 / 16:55

2 respostas

4

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

    
por 05.07.2016 / 15:39
2

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).

    
por 26.06.2015 / 08:04

Tags