Я бы хотел увидеть фактические изменения git-фиксации в файле ansible vault.Как отличить измененные изменения хранилища?
Есть ли простой способ достижения этого?
Я бы хотел увидеть фактические изменения git-фиксации в файле ansible vault.Как отличить измененные изменения хранилища?
Есть ли простой способ достижения этого?
Вы можете сделать очень аккуратно, так что обычные инструменты git, такие как git log
и git diff
, могут видеть внутри сводчатых файлов, используя специальный драйвер git diff и .gitattributes
.
.vault_password
и что этот файл не совершено - вы должны также добавить его в .gitignore
.Добавить файл .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
указывает git не пытаться выполнить трехстороннее слияние этих файлов.
Затем вы должны установить драйвер различий для файлов с атрибутом diff=ansible-vault
в ansible-vault view
:
git config --global diff.ansible-vault.textconv "ansible-vault view"
И это должно быть это - когда мерзавец рассчитывает посмотреть различия файлов спичек ваш шаблон, это Сначала дешифруем их.
Итак, после некоторого рытья я построил нетривиальное решение.
Прежде всего сохраните свой пароль хранилища в файле (.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))
Также полезно добавить фильтр '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 –
Мой 'PAGER' был' most' вместо 'less'. Выполнение 'git diff' заставило меня застрять в подсказке' Vault password: '. Я должен был установить мой git-пейджер, чтобы использовать 'cat', выполнив команду' git config -global core.pager cat' – GMaster
@Selivanov Pavel Спасибо за этот отзыв - я обновил ответ с этим. –