2. Vaults 加密数据
什么是ansible-vault
Ansible可能需要访问密码或者API密钥等敏感数据,以便配置受控主机。通常,此信息可能以纯文本形式存储在清单变量或其他ansible文件中。但若如此,任何有权访问ansible文件的用户或者存储这些ansible文件的版本控制系统都能够访问此敏感数据。这显然存在安全风险。
使用ansible随附的ansible vault 可以加密和解密任何由ansible使用的结构化数据文件。若要使用ansible vault,可通过一个名为ansible-vault的命令行工具创建、编辑、加密、解密和查看文件。Ansible vault可以加密任何由ansible使用的结构化数据文件。这可能包括清单变量、playbook中含有的变量文件、在执行playbook时作为参数传递的变量文件,或者ansible角色中定义的变量。
操作说明
创建加密文件
ansible-vault create hosts
使用密码文件创建
ansible-vault create --vault-password-file=vault-pass host
给现有文件加密
ansible-vault encrypt hosts
编辑加密文件
ansible-vault edit hosts
# 这个命令会将该文件解密,并放到一个临时文件,编辑完后再保存到原文件。
查看加密文件
ansible-vault view hosts
# 一行命令可以查看多个加密文件。
更改密码
ansible-vault rekey hosts
# 先交互式输入旧的密码,然后再交互式输入两次新密码,即更改密码成功。
取消密码
ansible-vault decrypt hosts
# 交互式输入密码,即取消加密成功。
指定密码文件
// 交互式
ansible-playbook --ask-vault-pass site.yaml
// 指定密码文件
ansible-vault decrypt --vault-id=passwordfile site.yaml //对应新版本
ansible-vault decrypt --vault-password-file=passwordfile site.yaml
# 可不写等于号的,即 --vault-id passwordfile & --vault-password-file passwordfile