ansible-vault 如何保护数据
-
ansible-vault能够加密什么?
ansible-vault能够加密任何结构化数据,包括yaml文件.
- 加密变量
- role中的变量文件,例如vars和defaults
- 资源清单变量,例如host_vars和group_vars
- 包含include_vars和vars_files的变量文件
- 通过-e参数传递给ansbile-playbook的变量文件,如-e @vars.yml或-e @vars.json
-
不适合做vault加密?
- 由于vault加密单位是整个文件,不能对部分文件或值进行加密.
- 文件和模板不能用value加密,它们可能与json、yml文件不一样.
ansible-vault 保护数据的基本操作
-
ansible-vault工具子命令
子命令 描述 create 使用编辑器创建加密文件。这需要在运行之前先配置编辑器的环境变量 view 查看加密后的文件内容,不对加密文件做修改 edit 用编辑器编辑一个存在的加密文件,在内存中解密,退出编辑器后又保存成加密文件 encrypt 加密一个已有的结构化数据文件 decrypt 解密文件。使用这个命令要小心,不要把解密后的文件提交到版本控制系统中 rekey 改变用于加密、解密的口令.使用版本控制系统管理这个文件,即使你文件的内容没有变化,也需要再次进行提交,重置密钥的操作将会更新最终加密的文件 -
加密
-
创建新加密结构化文件
ansible-vault create aws_creds.yml # 创建新文件,调用ansible-valut加密
-
加密已存在结构化文件
# 方式1 输入加密密码 ansible-valut encrypt aws_creds.yml # 调用encrypt加密,需要输入密码 ansible-playbook --ask-vault-pass aws_creds.yml # 执行时需要输入密码 ansible-playbook --vault-id prompt aws_creds.yml # ansible 2.4版本支持vault-id替换 # 方式2 加密文件进行操作 ansible-vault encrypt --vault-password-file pwdfile aws_creds.yml # 加密文件进行加密 ansible-playbook --vault-password-file pwdfile aws_creds.yml # 执行时不用输入密码 ansible-vault encrypt --vault-id pwdfile aws_creds.yml # ansible 2.4版本支持vault-id替换 ansible-playbook --vault-id pwdfile aws_creds.yml # ansible 2.4版本支持vault-id替换
-
解密
# 方式1解密 ansible-vault decrypt aws_creds.yml # 方式2解密 ansible-vault decrypt --vault-password-file pwdfile aws_creds.yml ansible-vault decrypt --vault-id pwdfile aws_creds.yml
-
多文件、多个密钥加密、解密、执行场景
# 加密 ansible-vault encrypt --vault-id pwdfile test.yml ansible-vault encrypt --vault-id pwdfile1 test1.yml # 执行:指定多个加密文件,不用管加载顺序 ansible-playbook --vault-id pwdfile1 --vault-id pwdfile test.yml # 解密 ansible-vault decrypt --vault-id pwdfile1 --vault-id pwdfile test.yml test1.yml
实践场景
ansible-valut常被用来加密vars文件,加密后的vars文件和之前调用方式一样,包括 用在tasks、templates中,唯一需要注意的是 访问的时候需要添加 密码文件或者 交互输入密码进行执行.