我们正在使用Ansible Vault在我们的Ansible Playbook git存储库中存储密码,证书的私钥等。 我们现有的所有私人数据都是文本forms的,所以我们可以将其存储在variables中。 然后将这些文件用于模板或复制模块的content参数。
现在,我们有一个Java KeyStore文件,可悲的是有一个二进制格式。 因此,它不能存储在一个variables – 或者至less我不知道如何去做。 什么是最简单的方法,让我们的文件在git中正确encryption,但在运行ansible-playbook时可用?
我已经尝试过没有成功:
{{base64_data | b64decode}} {{base64_data | b64decode}} 。 在结果文件的hex转储中导致大量EF BF BD 。 这三个字节以UTF-8编码Unicodereplace字符,所以将二进制数据解释为文本存在问题。 content="{{base64_data | b64decode}}"的复制模块。 Ansible抱怨:“一个variables插入一个新的参数到模块的参数。” 当使用单引号而不是双引号时,Ansible抱怨“错误parsing参数string”,以及所有二进制数据的副本,转储到terminal… 您可以使用带有base64variables的shell命令来执行此操作。
- vars: - myvar: "<my_base64_var>" - name: Create binary file shell: "echo '{{myvar}}' | base64 -d > /var/tmp/binary.dat"
埃里克
我们这样做的方式是:
– 我们使用https://www.agwa.name/projects/git-crypt/encryption个别敏感资料(我们资源库的一小部分) – 我们都会使用git标记标签 – 我们定期检查是否有未签名的文件
git-crypt的优点是它依赖于gitfilter,encryption是透明的。 另外,您可以在不影响encryption内容的前提下访问存储库(如果不能获得解密密钥,将忽略encryption的文件)。