How to diff ansible vault changes?

前端 未结 4 1546
清歌不尽
清歌不尽 2020-12-07 18:08

I\'d like to see the actual git commit changes in the ansible vault file.

Is there an easy way how to achieve this?

4条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-07 18:38

    You can do this very neatly, so that the normal git tools like git log and git diff can see inside the vaulted files, using a custom git diff driver and .gitattributes.

    • Make sure that your vault password is in .vault_password and that that file is not committed - you should also add it to .gitignore.
    • Add a .gitattributes file that matches any files in your repository that are encrypted with ansible-vault and give them the attribute diff=ansible-vault. For example, I have:

      env_vars/production.yml diff=ansible-vault merge=binary
      env_vars/staging.yml diff=ansible-vault merge=binary
      

      You can also use wildcarded patterns - the first element of each line, the pattern, follows the same rules as .gitignore files. The merge=binary option tells git not to attempt to do a three-way merge of these files.

    • Then you have to set the diff driver for files with attribute diff=ansible-vault to ansible-vault view:

      git config --global diff.ansible-vault.textconv "ansible-vault view"
      

    And that should be it - when git is calculating diffs of the files your pattern matches, it'll decrypt them first.

提交回复
热议问题