目录
vault加密模块
Ansible自带的Vault加密功能,通过AES-256加密算法,极为安全,Vault可以将经过加密的密码和敏感数据同Playbook存储在一起
ansible-vault 简单使用
ansible-vault具有简单加解密功能,且对于同一密码同一文件加密后,文件都不相同
解密后,内容不变,内容可以还原,有点神奇
- edit: 用于编辑ansible-vault加密过的文件
- rekey: 重新修改已被加密文件的密码
- create: 创建一个新文件,并直接对其进行加密
- view: 查看经过加密的文件
- decrypt: 解密文件
创建密码文件mysql_passwd.yml,内容如下
---
user: root
password: root
encrypt 加密文件
ansible-vault encrypt mysql_passwd.yml
New Vault password: *****
Confirm New Vault password: *****
Encryption successful
查看加密文件
cat mysql_passwd.yml
$ANSIBLE_VAULT;1.1;AES256
34623561613433333733393964323363633439626237376265643434633733316365373563323266
3836336565343932636237633634666633623631303366620a623865303763363561363830376634
30343435306638616532313833653363663339633239393465363138386234366330613936343230
3631666364636664300a383634336237623433393632666463366261633462303436363234383264
36643639613461616363376538353466663534366663333336323137396564336462
通过密码查看文件,此时文件还是加密的
ansible-vault view mysql_passwd.yml
Vault password: *****
---
user: root
password: root
解密文件
ansible-vault decrypt mysql_passwd.yml
Vault password: *****
Decryption successful
cat mysql_passwd.yml
---
user: root
password: root
与playbook一起使用
mysql_passwd.yml已经又加密过了
vault01.yaml文件
---
- hosts: ubuntu
vars_files:
mysql_passwd.yml
tasks:
- name: debug passwd
debug:
msg:
- "{{ user }}"
- "{{ password }}"
执行代码,这时还需要通过--ask-vault-pass提供密码,对自动化运维不友好,后面还可以通过文件的方式指定密码
ansible-playbook vault01.yaml --ask-vault-pass
Vault password: *****
PLAY [ubuntu] *******************************************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************************************
ok: [107.151.199.209]
TASK [debug passwd] *************************************************************************************************************************************
ok: [107.151.199.209] => {
"msg": [
"root",
"root"
]
}
PLAY RECAP **********************************************************************************************************************************************
107.151.199.209 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
将加密密码写入到vault_pass.txt
要将密码文件权限设置为600
12345
也可以通过--vault-password-file vault_pass.txt
指定密码
ansible-playbook vault01.yaml --vault-password-file ./vault_pass.txt
PLAY [ubuntu] *******************************************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************************************
ok: [107.151.199.209]
TASK [debug passwd] *************************************************************************************************************************************
ok: [107.151.199.209] => {
"msg": [
"root",
"root"
]
}
PLAY RECAP **********************************************************************************************************************************************
107.151.199.209 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
下官方文档中参考更多的选项用法及详细案例
官方链接