
通常、ansible-vault で暗号化されたファイルを編集用に開きたい場合は、次のコマンドを実行します。ansible-vault edit <filename>
これにより、ファイルが一時ファイルに復号化され、編集用に開きます。
しかし、私が知りたいのは、vim 内からこれを実現する方法、たとえば構文を使用してシェル コマンドを実行する方法です:! ...command...
。たとえば、暗号化されたファイルを vim で開き、次のコマンドを実行すると、ファイルを復号化できることはわかっています。
:! ansible-vault edit %
しかし、これにより、ansible-vault を含むファイルが別のウィンドウで開かれ、vim に戻るにはキーを押す必要があります。
私がやりたいのは、このファイルを vim で開いて、他の通常のファイルや ansible-vault で暗号化されたファイルと一緒に編集できるようにすることです。現在、私はいくつかの tmux ペインを開いてこれを行っていますが、これはちょっと面倒です。
答え1
暗号化された vault ファイルを編集するときに、vim 内からこれを実行しました。
:!ansible-vault --vault-password-file=~/.vault_pass decrypt %
変更を加えてファイルを再度暗号化します。
:!ansible-vault --vault-password-file=~/.vault_pass encrypt %
ボールトのパスワードはプレーンテキストとして~/.vault_passに保存されます
内容を表示して元の暗号化ファイルに戻るには(gitをSCMとして使用し、逃亡者.vimプラグイン) で最初に復号化し、完了したら次の操作を行います。
:Git checkout %
将来的には、これらのコマンドの関数またはエイリアスを作成して、より高速化する可能性があります。今のところ、コマンド履歴検索を実行して、毎回すべてを入力しなくても済むようにしています。
q: /decrypt N enter
答え2
私はそれを使って
%! ansible-vault decrypt --output -
バッファを暗号化するには、
%! ansible-vault encrypt --output -
これを自動化できれば素晴らしいと思います。私はある程度の成功を収めました。
autocmd BufNewFile,BufRead *
\ if getline(1) =~ '$ANSIBLE_VAULT;.*;AES256' |
\ execute '%! ansible-vault decrypt --output -' |
\ endif
しかし、終了時にバッファの内容を再暗号化するための autocmd を設定できませんでした。