Mar*_*air 54
你可以这样做很整齐,使普通的Git工具喜欢git log和git diff可以看到拱形的文件里面,使用自定义的git的差异驱动程序和.gitattributes.
.vault_password,并且该文件未提交 - 您还应该将其添加到.gitignore.添加一个.gitattributes文件,该文件与存储库中使用ansible-vault加密的任何文件相匹配,并为其提供属性diff=ansible-vault.例如,我有:
env_vars/production.yml diff=ansible-vault merge=binary
env_vars/staging.yml diff=ansible-vault merge=binary
Run Code Online (Sandbox Code Playgroud)
您还可以使用通配模式 - 每行的第一个元素(模式)遵循与.gitignore文件相同的规则.该merge=binary选项告诉git不要尝试对这些文件进行三向合并.
然后,你必须设置与属性文件中的DIFF司机diff=ansible-vault到ansible-vault view:
git config --global diff.ansible-vault.textconv "ansible-vault view"
Run Code Online (Sandbox Code Playgroud)这应该是它 - 当git计算你的模式匹配的文件的差异时,它将首先解密它们.
因此,经过一些挖掘,我构建了非平凡的解决方案.
首先将您的保管库密码存储到(.gitignored).vault_password文件中.
在以下示例中,文件的a HEAD和HEAD~2版本为 inventory/group_vars/xyz/vault.ymlvimdiff-ed:
vimdiff \
<(ansible-vault view --vault-password-file=.vault_password \
<(git show HEAD:inventory/group_vars/xyz/vault.yml)) \
<(ansible-vault view --vault-password-file=.vault_password \
<(git show HEAD~2:inventory/group_vars/xyz/vault.yml))
Run Code Online (Sandbox Code Playgroud)