Mi piacerebbe vedere le reali modifiche al commit git nel file del vault ansible.Come cambiare le modifiche del vault?
C'è un modo semplice per raggiungere questo obiettivo?
Mi piacerebbe vedere le reali modifiche al commit git nel file del vault ansible.Come cambiare le modifiche del vault?
C'è un modo semplice per raggiungere questo obiettivo?
Puoi fare th è molto ordinatamente, in modo che i normali strumenti git come git log
e git diff
possano vedere all'interno dei file vaulted, utilizzando un driver git diff personalizzato e .gitattributes
.
.vault_password
e che tale file non è commesso - si dovrebbe anche aggiungere al .gitignore
.Aggiungere un file .gitattributes
che corrisponda a tutti i file nel repository crittografati con ansible-vault e assegnare loro l'attributo diff=ansible-vault
. Ad esempio, ho:
env_vars/production.yml diff=ansible-vault merge=binary
env_vars/staging.yml diff=ansible-vault merge=binary
È inoltre possibile utilizzare i modelli con caratteri jolly - il primo elemento di ogni riga, il modello, segue le stesse regole .gitignore
file. L'opzione merge=binary
dice a git di non tentare di fare un'unione a tre vie di questi file.
poi si deve impostare il driver diff per i file con l'attributo diff=ansible-vault
a ansible-vault view
:
git config --global diff.ansible-vault.textconv "ansible-vault view"
E che dovrebbe essere - quando git sta calcolando diff dei file tuo modello corrisponde, esso li decifreremo prima.
Quindi dopo alcuni scavi ho costruito la soluzione non banale.
Prima di tutto, memorizzare la password del Vault nel file (.gitignored) .vault_password
.
Nell'esempio che segue un HEAD
e HEAD~2
versioni del file inventory/group_vars/xyz/vault.yml
sono vimdiff-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))
È anche utile aggiungere il filtro 'merge = binary' per impedire git dall'unione a 3 vie di file crittografati e' git config diff.ansible-vault.cachetextconv false' per impedire la memorizzazione nella cache delle informazioni sensibili: https: // selivan. github.io/2016/11/29/ansible-human-readable-git-diff-for-vault.html –
Il mio 'PAGER' era' most' invece di 'less'. L'esecuzione di un 'git diff' mi ha bloccato nel prompt' Vault password: '. Ho dovuto impostare il mio git cercapersone per usare 'cat' eseguendo il comando' git config --global core.pager cat' – GMaster
@Selivanov Pavel Grazie per il suggerimento - Ho aggiornato la risposta. –