Add automatic encrypt/decrypt for ansible-vaults in vim
This commit is contained in:
@@ -139,3 +139,52 @@ vim.api.nvim_create_autocmd("FileType", {
|
|||||||
vim.opt_local.tabstop = 4
|
vim.opt_local.tabstop = 4
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if vim.fn.executable('ansible-vault') then
|
||||||
|
local ansiblevaultgroup = vim.api.nvim_create_augroup("ANSIBLE_VAULT", { clear = true })
|
||||||
|
local vault_id = "default"
|
||||||
|
local function register_ansible_vault_for_files_of_path_pattern(pattern)
|
||||||
|
-- ensure no tracability of secrets!
|
||||||
|
vim.api.nvim_create_autocmd({ "BufReadPre", "FileReadPre" }, {
|
||||||
|
pattern = pattern,
|
||||||
|
group = ansiblevaultgroup,
|
||||||
|
callback = function ()
|
||||||
|
vim.opt_local.swapfile = false
|
||||||
|
vim.opt_local.backup = false
|
||||||
|
vim.opt_local.undofile = false
|
||||||
|
vim.opt_local.viminfo = ""
|
||||||
|
end
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd({ "BufReadPost", "FileReadPost" }, {
|
||||||
|
pattern = pattern,
|
||||||
|
group = ansiblevaultgroup,
|
||||||
|
callback = function ()
|
||||||
|
local header = vim.fn.split(vim.fn.getline(1), ";")
|
||||||
|
if vim.fn.len(header) > 3 then
|
||||||
|
vault_id = header[3]
|
||||||
|
else
|
||||||
|
vault_id = "default"
|
||||||
|
end
|
||||||
|
vim.cmd([[silent %!ansible-vault decrypt]])
|
||||||
|
end
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd({ "BufWritePre", "FileWritePre" }, {
|
||||||
|
pattern = pattern,
|
||||||
|
group = ansiblevaultgroup,
|
||||||
|
callback = function ()
|
||||||
|
vim.cmd('silent %!ansible-vault encrypt --encrypt-vault-id="' .. vault_id .. '"')
|
||||||
|
end
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_autocmd({ "BufWritePost", "FileWritePost" }, {
|
||||||
|
pattern = pattern,
|
||||||
|
group = ansiblevaultgroup,
|
||||||
|
callback = function ()
|
||||||
|
vim.cmd([[silent undo]])
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
register_ansible_vault_for_files_of_path_pattern("*/ansible/**/vault.yml")
|
||||||
|
register_ansible_vault_for_files_of_path_pattern("*/group_vars/*/vault.yml")
|
||||||
|
register_ansible_vault_for_files_of_path_pattern("*/host_vars/*/vault.yml")
|
||||||
|
register_ansible_vault_for_files_of_path_pattern("*/vars/vault.yml")
|
||||||
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user