如何改变金库变化?

Ika*_*ský 28 git diff ansible ansible-vault

我想在ansible vault文件中看到实际的git commit更改.

有一个简单的方法如何实现这一目标?

Mar*_*air 54

你可以这样做很整齐,使普通的Git工具喜欢git loggit 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-vaultansible-vault view:

    git config --global diff.ansible-vault.textconv "ansible-vault view"
    
    Run Code Online (Sandbox Code Playgroud)

这应该是它 - 当git计算你的模式匹配的文件的差异时,它将首先解密它们.

  • 添加`merge = binary`过滤器以防止git从加密文件的三向合并和`git config diff.ansible-vault.cachetextconv false`以防止缓存敏感信息也是很好的:https://selivan.github.io /2016/11/29/ansible-human-readable-git-diff-for-vault.html (4认同)
  • 我也是@BARJ:`导出 ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_password` (3认同)
  • 我必须设置 ANSIBLE_VAULT_PASSWORD_FILE 环境。 (2认同)
  • 除了指定的“diff.ansible-vault”命令之外,您还可以附加“--vault-password-file=.vault_password”,或者按照@victor-schröder下面的建议在“ansible.cfg”中设置相应的属性。 (2认同)
  • 另一个提示:如果您的保管库具有不同的密码,您可以使用 `vault_identity_list=foo@/path/to/vaultfile1,bar@/path/to/vaultfile2` ([doc](https://docs.ansible.com /ansible/latest/reference_appendices/config.html#default-vault-identity-list))。即使您的保管库没有 ID,这也可以工作,因为显然所有身份都会被尝试(即标签“foo”和“bar”是任意的并且没有效果)。 (2认同)

Ika*_*ský 9

因此,经过一些挖掘,我构建了非平凡的解决方案.

首先将您的保管库密码存储到(.gitignored).vault_password文件中.

在以下示例中,文件的a HEADHEAD~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)


kmm*_*vnr 8

您可以使用https://github.com/dellis23/ansible-toolkit中的atk-git-diff实用程序

这个

变