
Normalmente, quando quero abrir um arquivo criptografado pelo ansible-vault para edição, eu simplesmente executo ansible-vault edit <filename>
- isso descriptografa o arquivo em um arquivo temporário e o abre para edição.
No entanto, o que eu quero saber é como conseguir isso no vim, por exemplo, executando um comando shell usando a :! ...command...
sintaxe. Por exemplo, eu sei que posso descriptografar o arquivo abrindo o arquivo criptografado no vim e executando isto:
:! ansible-vault edit %
Mas isso abre o arquivo com o ansible-vault em uma janela diferente, e então você tem que pressionar uma tecla para retornar ao vim.
O que eu quero fazer é poder abrir esse arquivo com o vim para poder editá-lo junto com outros arquivos regulares ou criptografados com o ansible-vault. Atualmente estou fazendo isso abrindo vários painéis do tmux, mas isso é uma espécie de PITA.
Responder1
Tenho feito isso dentro do vim ao editar um arquivo criptografado do vault:
:!ansible-vault --vault-password-file=~/.vault_pass decrypt %
Faça uma alteração e criptografe novamente o arquivo:
:!ansible-vault --vault-password-file=~/.vault_pass encrypt %
A senha do cofre entra em ~/.vault_pass como texto simples
Para apenas visualizar o conteúdo e depois voltar ao arquivo criptografado original (usando git como SCM efugitivo.vimplugin), primeiro descriptografe e quando terminar:
:Git checkout %
Posso criar uma função ou aliases para esses comandos para torná-los mais rápidos no futuro. Por enquanto, faço uma pesquisa no histórico de comandos para não precisar digitar tudo toda vez:
q: /decrypt N enter
Responder2
Eu consegui fazer isso usando
%! ansible-vault decrypt --output -
Para criptografar o buffer, use
%! ansible-vault encrypt --output -
Seria ótimo poder automatizar isso. Consegui algum grau de sucesso com
autocmd BufNewFile,BufRead *
\ if getline(1) =~ '$ANSIBLE_VAULT;.*;AES256' |
\ execute '%! ansible-vault decrypt --output -' |
\ endif
No entanto, não consegui definir um autocmd para criptografar novamente o conteúdo do buffer na saída.