Estamos utilizando Ansible Vault para almacenar contraseñas, claves privadas para certificados, etc. en nuestro repositorio git de Ansible Playbook. Todos nuestros datos privados existentes están en forma de texto, por lo que podemos almacenarlos en variables. Estos se utilizan en plantillas o con el content
parámetro del módulo de copia.
Ahora, tenemos un archivo Java KeyStore, que lamentablemente tiene un formato binario. Como tal, no se puede almacenar dentro de una variable, o al menos no sé cómo hacerlo. ¿Cuál sería la forma más fácil de cifrar nuestro archivo correctamente mientras descansa en git, pero disponible cuando se ejecuta ansible-playbook
?
Lo que ya he intentado sin éxito:
- Codificar el archivo binario en base64, almacenar los datos codificados en una variable y usar el módulo de plantilla con
{{base64_data | b64decode}}
. Lleva a muchosEF BF BD
volcados hexadecimales del archivo resultante. Los tres bytes codifican el carácter de reemplazo Unicode en UTF-8, por lo que hay un problema con la interpretación de los datos binarios como texto. - Codificar el archivo binario en base64, almacenar los datos codificados en una variable y usar el módulo de copia con
content="{{base64_data | b64decode}}"
. Ansible se queja con "Una variable inserta un nuevo parámetro en los argumentos del módulo". Al usar comillas simples en lugar de comillas dobles, Ansible se queja con "cadena de argumento de análisis de error", y una copia de todos los datos binarios, volcados al terminal ...
Respuestas:
Puede usar un comando de shell con una variable base64 para hacer eso.
Eric
fuente
La forma en que hacemos eso para nuestra configuración ansible es:
-Ciframos material sensible individual (un pequeño subconjunto de nuestro repositorio) usando https://www.agwa.name/projects/git-crypt/ -Todos nos comprometemos siempre usando etiquetas de signo git -Verificamos periódicamente si hay archivos sin firmar
La ventaja de git-crypt es que, como se basa en filtros git, el cifrado es transparente. Además, puede dar acceso al repositorio a los desarrolladores sin comprometer el contenido cifrado (ignorará los archivos cifrados si no se puede obtener una clave de descifrado).
fuente