通过ansible-vault可以对任务进行加密和解密操作,比较适合一些数据敏感的场景。
1.ansible-vault简单演示
[root@ansible ansible]# ansible-vault encrypt test_vault.yaml
New Vault password:
Confirm New Vault password:
Encryption successful
加密之后就是密文的:
[root@ansible ansible]# cat test_vault.yaml
$ANSIBLE_VAULT;1.1;AES256
35343862323239323834653931633037616134363064613133343337666439393936353731346534
3933383662643739343736633833373130643436633966660a373836633331323331666437393738
34663937333632653938653931373033343038633831376435363137306438383165343633366263
3166663965326162310a313330393432343166363934623162613764306232626438353033313663
38373634623032376532353861363330343562613863633433663530636130373138623439346664
66333639643230396134636534633066333034306337636533616465363832396231643939653537
32636664336238396539616263666664396339656531616163343337323932613766346266383834
64366639343837326662363032393432363430646536313464636434343064613736383936383234
32313631373264336639303163393831306464393265363230643638386639636233
执行任务:
执行必须要有密码
[root@ansible ansible]# ansible-playbook --ask-vault-pass test_vault.yaml
Vault password:
PLAY [192.168.10.20] *****************************************************************************************************************************************************************************************
TASK [debug] *************************************************************************************************************************************************************************************************
ok: [192.168.10.20] => {
"msg": "thisis vauletest"
}
解密:
[root@ansible ansible]# ansible-vault decrypt test_vault.yaml
Vault password:
Decryption successful
[root@ansible ansible]# cat test_vault.yaml
---
- hosts: 192.168.10.20
gather_facts: no
tasks:
- debug:
msg: "thisis vauletest"
非交互式认证执行
echo "123456" > pwdfile
通过“--vault-password-file”来指定加密所需的密码文件
[root@ansible ansible]# ansible-playbook --vault-password-file pwdfile test_vault.yaml
PLAY [192.168.10.20] *****************************************************************************************************************************************************************************************
TASK [debug] *************************************************************************************************************************************************************************************************
ok: [192.168.10.20] => {
"msg": "thisis vauletest"
}
通过--vault-id来指定运行所需要的密码文件
[root@ansible ansible]# ansible-playbook --vault-id pwdfile test_vault.yaml
PLAY [192.168.10.20] *****************************************************************************************************************************************************************************************
TASK [debug] *************************************************************************************************************************************************************************************************
ok: [192.168.10.20] => {
"msg": "thisis vauletest"
}
34656438663562623263626239376534653235623531306163383964383066353366
通过--vault-id结合prompt交互式输入密码
[root@ansible ansible]# ansible-playbook --vault-id prompt test_vault.yaml
Vault password (default):
PLAY [192.168.10.20] *****************************************************************************************************************************************************************************************
TASK [debug] *************************************************************************************************************************************************************************************************
ok: [192.168.10.20] => {
"msg": "thisis vauletest"
}
2.--vault-id
"--vault-id"选项支持同时使用多个密码文件进行解密
# echo "123123" > pwdfile
# echo "123456" > pwdfile1
# ansible-vault encrypt --vault-id pwdfile test.yml
# ansible-vault encrypt --vault-id pwdfile1 test1.yml
当一个playbook被另一个playbook使用的时候
# ansible-playbook --vault-id pwdfile1 --vault-id pwdfile test.yml
或者这种方式
# ansible-vault decrypt --vault-id pwdfile1 --vault-id pwdfile test.yml test1.yml
create子命令
使用create子命令,可以创建一个被加密的文件
# ansible-vault create test
view子命令
使用view子命令,可以查看已经被加密过的文件的原内容,但是不会对文件本身进行还原操作,只是查看原内容。
# ansible-vault view test.yml
# ansible-vault view --vault-id pwdfile test.yml
edit子命令
使用edit子命令,可以直接修改被加密过的文件的原内容,使用edit子命令修改被加密过的文件内容的过程相当于:先解密、修改原内容,再加密
# ansible-vault edit test.yml
# ansible-vault edit --vault-id pwdfile test.yml
rekey子命令
使用rekey子命令,可以修改被加密文件的密码,比如,一开始我使用了123123这个密码对test.yml文件进行了加密,现在,我想把密码换成123456,执行如下命令即可
# ansible-vault rekey test.yml