Ansible Vaultファイルで実際のgit commitの変更を見たいのですが。
これを達成する簡単な方法はありますか?
これは非常にきれいに行うことができるので、git log
やgit diff
などの通常のgitツールは、カスタムgit diffドライバーと.gitattributes
を使用して、保管されたファイル内を見ることができます。
.vault_password
にあり、そのファイルがnotコミットされていることを確認してください-.gitignore
にも追加する必要があります。リポジトリ内のansible-vaultで暗号化されたすべてのファイルと一致する.gitattributes
ファイルを追加し、属性diff=ansible-vault
を付与します。たとえば、私は:
env_vars/production.yml diff=ansible-vault merge=binary
env_vars/staging.yml diff=ansible-vault merge=binary
ワイルドカードパターンを使用することもできます。各行の最初の要素であるパターンは、.gitignore
ファイルと同じルールに従います。 merge=binary
オプションは、これらのファイルの3者間マージを行わないようにgitに指示します。
次に、属性diff=ansible-vault
をansible-vault view
に設定したファイルの差分ドライバーを設定する必要があります。
git config --global diff.ansible-vault.textconv "ansible-vault view"
そして、それはそれであるはずです-gitがあなたのパターンが一致するファイルのdiffを計算するとき、それは最初にそれらを解読します。
それで、少し掘り下げた後、私は重要な解決策を構築しました。
まず、ボールトのパスワードを(.gitignored).vault_password
ファイル。
次の例では、HEAD
およびHEAD~2
ファイルのバージョンinventory/group_vars/xyz/vault.yml
はvimdiffされています:
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))
完全を期すために、Ansible Vaultのファイルの差分をグローバルに設定する方法について言及することは価値があります。たとえば、私はここで本当に多くのansibleリポジトリを使用しており、それらのほとんどすべてにいくつかの保管された秘密があります。だから私が欲しいのは、私のマシンから別のマシンにグローバルでポータブルな設定です。
~/.gitconfig
に次のセクションを追加します:
[core]
# The following line defines a global .gitattributes file
attributesfile = ~/.gitattributes
[diff "ansible-vault"]
textconv = "ansible-vault view"
これを機能させるには、Ansible-Vaultされたファイルの名前付けパターンが必要です。これは、とにかくやるべきことです。私の場合は、拡張子.vault.yml
を付けます。したがって、私の~/.gitattributes
ファイルは次のようになります。
*.vault.yml diff=ansible-vault merge=binary
最後に、常にパスワードを入力しないようにするために、各リポジトリの便利な場所にファイルがあることを確認してください(通常は.vault
のようなもので、ルートに配置されます)。このファイルには、プレーンテキストのパスワード(当然.gitignore
d)か、そのようなパスワードを生成する実行可能スクリプトが含まれている必要があります。
それを準備したら、グローバルまたはローカルの.vault
に次の行を追加して、ansible.cfg
ファイルを使用するようansibleに指示します。
vault_password_file = .vault
できました。ここでgit diff
を実行すると、vaultされていないファイルから期待される読み取り可能なdiffが生成されます:)