ansible学习之ansible-vault

通过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
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: