
Wenn ich eine mit Ansible-Vault verschlüsselte Datei zum Bearbeiten öffnen möchte, führe ich normalerweise einfach aus. ansible-vault edit <filename>
Dadurch wird die Datei in eine temporäre Datei entschlüsselt und zum Bearbeiten geöffnet.
Ich möchte jedoch wissen, wie ich dies innerhalb von vim erreichen kann, z. B. durch Ausführen eines Shell-Befehls mit der :! ...command...
Syntax. Ich weiß beispielsweise, dass ich die Datei entschlüsseln kann, indem ich die verschlüsselte Datei in vim öffne und dann Folgendes ausführe:
:! ansible-vault edit %
Dadurch wird die Datei mit Ansible-Vault jedoch in einem anderen Fenster geöffnet, und Sie müssen dann eine Taste drücken, um zu Vim zurückzukehren.
Ich möchte diese Datei mit vim öffnen können, sodass ich sie neben anderen normalen Dateien oder mit ansible-vault verschlüsselten Dateien bearbeiten kann. Derzeit mache ich das, indem ich mehrere tmux-Fenster öffne, aber das ist ziemlich mühsam.
Antwort1
Ich habe dies innerhalb von Vim getan, als ich eine verschlüsselte Tresordatei bearbeitet habe:
:!ansible-vault --vault-password-file=~/.vault_pass decrypt %
Nehmen Sie eine Änderung vor und verschlüsseln Sie die Datei anschließend erneut:
:!ansible-vault --vault-password-file=~/.vault_pass encrypt %
Das Tresorkennwort wird im Klartext in ~/.vault_pass abgelegt.
Um nur den Inhalt anzuzeigen und dann zur ursprünglichen verschlüsselten Datei zurückzukehren (mit Git als SCM undflüchtig.vimPlugin), zuerst entschlüsseln und wenn fertig:
:Git checkout %
Ich werde vielleicht eine Funktion oder Aliase für diese Befehle erstellen, um es in Zukunft schneller zu machen. Im Moment führe ich eine Befehlsverlaufssuche durch, damit ich nicht jedes Mal alles eintippen muss:
q: /decrypt N enter
Antwort2
Das gelang mir mit
%! ansible-vault decrypt --output -
Um den Puffer zu verschlüsseln, verwenden Sie
%! ansible-vault encrypt --output -
Es wäre toll, wenn man das automatisieren könnte. Ich hatte einen gewissen Erfolg mit
autocmd BufNewFile,BufRead *
\ if getline(1) =~ '$ANSIBLE_VAULT;.*;AES256' |
\ execute '%! ansible-vault decrypt --output -' |
\ endif
Es gelang mir jedoch nicht, einen Autocmd zum erneuten Verschlüsseln des Pufferinhalts beim Beenden festzulegen.