GitHub

Vault 配置加密

类 ansible-vault 的文件加密:inventory / playbook 整体加密后可以直接被 run / ping / exec 使用,密码、密钥不再以明文落盘。

子命令

anx vault encrypt inventory.yml        # 就地加密(交互输入密码)
anx vault view inventory.yml           # 解密查看(不落盘)
anx vault edit inventory.yml           # 用 $EDITOR 编辑(明文只在临时文件)
anx vault rekey inventory.yml          # 更换密码
anx vault decrypt inventory.yml        # 就地解密

使用加密文件

密码来源三选一,优先级从高到低:

方式用法
密码文件--vault-password-file .pw
交互输入--ask-vault-pass
环境变量ANX_VAULT_PASSWORD=xxx anx run ...
anx run site.yml -i inventory.yml --ask-vault-pass            # 交互输入
anx run site.yml -i inventory.yml --vault-password-file .pw   # 密码文件
ANX_VAULT_PASSWORD=xxx anx run site.yml -i inventory.yml      # 环境变量

文件格式与密码学

$ANX_VAULT;1.0;AES256-GCM;ARGON2ID
<base64 载荷: salt(16) || nonce(12) || ciphertext>

密钥派生使用 Argon2id(抗 GPU 暴力破解),加密使用 AES-256-GCM 认证加密——同时提供机密性与完整性,密文被篡改会直接解密失败。

推荐做法:含 password / become_password 的 inventory 一律加密入库,CI 里用 ANX_VAULT_PASSWORD 环境变量或密码文件解锁。