Skip to content

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