环境版本说明
- RedHat9 [Red Hat Enterprise Linux release 9.0]
- Ansible [core 2.13.3]
- Python [3.9.10]
- jinja [3.1.2]
Ansible-vault介绍
- Ansible可能需要访问密码或API密钥等敏感数据,以配置受管主机。通常此信息会以纯文本形式存储在清单变量或其它Ansible文件中。这种操作让任何有权访问Ansible文件的用户或存储这些Ansible文件的版本控制系统都能够访问此敏感数据。
- 使用Ansible提供的Ansible Vault的命令行工具创建、编辑、加密和查看文件
- Ansible Vault可以加密任何由Ansible使用的数据文件。这可能包括清单变量、playbook中含有的变量文件在执行playbook时作为参数传递的变量文件,或者Ansible角色中定义的变量。
ansible-vault的常用参数
命令 | 解释 |
---|---|
create | 创建新的Vault加密文件 |
decrypt | 解密Vault文件 |
edit | 编辑Vault文件 |
view | 查看Vault文件 |
encrypt | 加密YAML文件(对现有文件加密) |
encrypt_string | 字符串加密 |
rekey | 给Vault加密文件更改密码 |
其它选项
选项 | 解释 |
---|---|
–vault-id | 指定其它密码存储文件 |
–ask-vault-password | 询问加密密码 |
–vault-password-file | 指定密码存储文件路径 |
-v, --verbose | 显示调试信息 |
[Step1]:
创建加密文件
ansible-vault create passwd.yml
> redhat
> redhat
# 写入下列内容
password: redhat@123
[Step2]:
查看加密文件
ansible-vault view passwd.yml
> redhat
[Step3]:
编辑加密文件
ansible-vault edit passwd.yml
> redhat
# 写入下列内容
user: student
[Step4]:
加密现有文件
echo password: redhat > pass.yml
ansible-vault encrypt pass.yml
> redhat
> redhat
[Step6]:
解密现有文件
ansible-vault decrypt passwd.yml
[Step7]:
解密现有文件,并解密文件名为pass_new.yml文件
ansible-vault decrypt pass.yml --output=pass_new.yml
[Step8]:
解密现有文件,并解密文件名为pass_new.yml文件
ansible-vault rekey pass.yml
> redhat
> redhat@123
可以使用另外一个文件来存储密码,这样在读取加密文件时,不需要额外输入密码
- 在读写加密文件时指定参数
--vault-id
- 在Ansible配置文件中指定
vault_password_file=
[Step1]:
编写密码存储文件
echo redhat@123 > pass.txt
[Step2]:
通过参数传递密码存储文件
ansible-vault view pass.yml --vault-id pass.txt
[Step3]:
通过在配置文件中指定密码存储文件
vim ansible.cfg
# 在[defaults]下增加一行
vault_password_file=/home/student/ansible/pass.txt
[Step4]:
直接读取加密文件
[Step5]:
当配置文件中指定了密码存储文件,对新文件进行加密时,会自动引用密码存储文件内容作为文件密码
ansible-vault encrypt dict.yml
[Step6]:
当配置文件引用的密码存储文件与加密文件密码不一致时,可以指定交互式输入密码,输入新密码
# 先注释掉Ansible配置文件中vault_password_file
# 创建一个新文件,指定加密密码为 redhat123
echo password: redhat123 > redhat.yml
ansible-vault encrypt redhat.yml
> redhat123
> redhat123
# 取消注释Ansible配置文件中vault_password_file
ansible-vault view redhat.yml # 先测试密码存储文件内容是否可以解密文件
ansible-vault view redhat.yml --ask-vault-password # 交互式输入新密码