Tôi muốn xem các thay đổi thực sự của commit trong tệp tin vault ansible.Làm cách nào để thay đổi các thay đổi vault ansible?
Có cách nào dễ dàng để đạt được điều này không?
Tôi muốn xem các thay đổi thực sự của commit trong tệp tin vault ansible.Làm cách nào để thay đổi các thay đổi vault ansible?
Có cách nào dễ dàng để đạt được điều này không?
Bạn có thể làm thứ rất gọn gàng, do đó các công cụ git thông thường như git log
và git diff
có thể thấy bên trong các tệp có vaulted, sử dụng trình điều khiển git diff tùy chỉnh và .gitattributes
.
.vault_password
và rằng tập tin đó là không cam - bạn cũng nên thêm nó vào .gitignore
.Thêm tệp .gitattributes
khớp với bất kỳ tệp nào trong kho lưu trữ của bạn được mã hóa với két an toàn và cung cấp cho chúng thuộc tính diff=ansible-vault
. Ví dụ, tôi có:
env_vars/production.yml diff=ansible-vault merge=binary
env_vars/staging.yml diff=ansible-vault merge=binary
Bạn cũng có thể sử dụng các mẫu ký tự đại diện - phần tử đầu tiên của mỗi dòng, mô hình, theo quy tắc tương tự như .gitignore
tập tin. Tùy chọn merge=binary
yêu cầu git không cố gắng thực hiện hợp nhất ba cách của các tệp này.
Sau đó, bạn phải thiết lập các tài xế khác cho các tập tin với thuộc tính diff=ansible-vault
để ansible-vault view
:
git config --global diff.ansible-vault.textconv "ansible-vault view"
Và đó nên được nó - khi git được tính diffs các file mẫu của bạn phù hợp, nó sẽ giải mã chúng trước.
Vì vậy, sau một số lần đào, tôi đã xây dựng giải pháp không tầm thường.
Trước hết, hãy lưu trữ mật khẩu của bạn vào tệp (.gitignored) .vault_password
.
Trong ví dụ sau một HEAD
và HEAD~2
phiên bản của tập tin inventory/group_vars/xyz/vault.yml
là 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))
Bạn cũng nên thêm bộ lọc 'merge = binary' để ngăn git từ cách hợp nhất 3 tập tin được mã hóa và' git config diff.ansible-vault.cachetextconv false' để ngăn chặn việc lưu thông tin nhạy cảm: https: // selivan. github.io/2016/11/29/ansible-human-readable-git-diff-for-vault.html –
My 'PAGER' là' most' thay vì 'less'. Việc thực thi 'git diff' khiến tôi bị kẹt trong lời nhắc' Vault password: '. Tôi đã phải thiết lập máy nhắn tin git của mình để sử dụng 'cat' bằng cách chạy lệnh' git config --global core.pager cat' – GMaster
@Selivanov Pavel Cảm ơn lời khuyên đó - Tôi đã cập nhật câu trả lời với điều đó. –