在ansible中有一个命令行工具
ansible-vault
可用于创建 编辑 加密 解密 查看文件
举个栗子
ansible-vaultcreate filename
New Vault password: #输入密码
Confirm New Vault password: #确认密码
也可以使用别的方法 比如创建一个密码文件
ansible-vaultcreate --vault-password-file-pass secret.yml
在最近的版本中保护文件的密文是AES256以后不确定
查看加密的文件
不想编辑的话可以直接使用 ansible-vault view filename
来查看使用ansible-vault加密的文件
编辑现有的加密文件
ansible-vaultedit filename
该命令会将加密文件解密为一个临时文件 并允许编辑
保存的时候它将复制临时文件的内容并删除临时文件
加密现有的文件
ansible-vault encrypt filename
输入两次密码
New Vault password: #输入密码
Confirm New Vault password: #确认密码
解密现有的文件
ansible-vault decrypt filename
#在解密文件时可以使用--output 选项以其他名称保存解密的文件
#举个栗子
ansible-vault decrypt secret.yml --output=sercret1-decrypted.yml
更改加密文件的密码
ansible-vault rekey filename
#输入原密码之后
New Vault password: #输入密码
Confirm New Vault password: #确认密码
如果一个playbook文件要访问被ansible-vault
加密的文件 需要向
ansible-playbook提供密码
使用选项 --vault-id 提供vault 的密码
如果以交互方式提供密码 可以使用 --vault-id @prompt 输入密码
管理机密实验
实验开始labdata-secret start
首先到达目录 /home/student/data-secret
创建加密文件vim secret.yml 改文件可以使用 redhat作为密码进行解密
取消注释 username和pwhash变量条目
保存退出
内容大概是 username: ansibleuser1
pwhash: 乱码
创建一个create_users.yml的playbook 它将使用secret,yml加密文件中定义的变量
playbook
---
- name: create user accounts for all our servers
hosts:devservers
become: True
remote_user: devops
vars_files:
- secret.yml
tasks:
- name: creating user from secretyml
user:
name: "{{ username }}"
password: "{{ pwhash }}"
检查语法 并且使用交互输入密码
ansible-playbook--syntax-check (--ask-vault-pass )/--vault-id @prompt create_users.yml
3.创建vault-pass文件作为密码文件 用于playbook
该文件将包含纯文本 redhat作为vault面 将文件的权限更改为0600
echo 'redhat' > vault-pass
chmod 0600 vault-pass
4.使用vault-pass 执行playbook 以利用secret.yml加密文件中存储为变量的密码在远程系统上创建ansibleuser1用户
ansible-playbook --vault-password-file=vault-passcreate_users.yml
5.验证是否有用户ansibleuser1存在 并在servera.lab.example.com上有正确的密码
ssh -o PreferredAuthentications=password ansibleuser1@servera.lab.example.com
输入密码 看能否登上ansible1
完成实验 lab data-secret finish