如何使用ansible-vault一次性批量加密多个名为vault的配置文件
批量加密所有vault文件的实现方案
ansible-vault本身支持传入多个文件路径,结合shell文件查找命令即可自动匹配所有名为vault的文件,无需手动逐个罗列路径。
方案1:find命令直接匹配执行(最快捷)
在ansible项目根目录执行以下命令即可一次性加密所有符合条件的文件:
find . -name "vault" -type f | xargs ansible-vault encrypt
该命令会递归查找当前目录下所有名为vault的普通文件,批量传给ansible-vault执行加密,后续新增的host_vars、group_vars目录下的vault文件也会被自动匹配,无需修改命令。
可选优化:排除无关目录
如果项目中存在其他无关目录的同名vault文件,可以给find命令增加排除规则,比如排除.git目录:
find . -name "vault" -type f -not -path "./.git/*" | xargs ansible-vault encrypt
方案2:Makefile封装(适合长期维护的项目)
如果需要频繁执行加密、解密、更换密码操作,可以在项目根目录新建Makefile统一管理:
VAULT_FILES := $(shell find . -name "vault" -type f) encrypt: ansible-vault encrypt $(VAULT_FILES) decrypt: ansible-vault decrypt $(VAULT_FILES) rekey: ansible-vault rekey $(VAULT_FILES)
后续仅需执行make encrypt即可完成全量vault文件加密,还可快速调用解密、更换密码等功能。
注意事项
- 首次加密前建议先备份所有vault明文文件,避免操作失误导致内容丢失
- 执行加密时输入的vault密码会统一应用到所有匹配到的文件,符合ansible-vault常规使用规范
- 已经加密过的vault文件会被ansible-vault自动跳过,不会重复加密报错
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

