Ansible——40.playbook 使用ansible-vault加密數據

使用"ansible- vault"命令,對敏感數據進行加密,可以對整個文件加密,也可以對某個字符串加密(也就是變量加密)

1. encrypt、decrypt子命令

整個test.yml的內容都是明文的,如果我想要對這個劇本進行加密
ansible-vault encrypt test.yml
–ask-vault-pass選項,在運行加密的劇本時輸入對應的密碼
ansible-playbook --ask-vault-pass test.yml
解密一個加密過的文件
ansible-vault decrypt test.yml

將密碼保存在某個文件中,然後在加密或者解密時,指定密碼文件
echo “123123” > pwdfile
通過–vault-password-file來指定加密解密所需的密碼文件
ansible-vault encrypt --vault-password-file pwdfile test.yml
ansible-vault decrypt --vault-password-file pwdfile test.yml
ansible2.4版本開始,官方不再推薦使用"–vault-password-file"選項,官方開始推薦使用"–vault-id"選項代替"–vault-password-file"選項指定密碼文件 ,二者等價。
ansible-vault encrypt --vault-id pwdfile test.yml
ansible-vault decrypt --vault-password-file pwdfile test.yml
在運行加密過的腳本和解密時,也可以使用"–vault-id"選項指定密碼文件
ansible-playbook --vault-id pwdfile test.yml
ansible-vault decrypt --vault-id pwdfile test.yml

–vault-id選項不僅能夠代替–vault-password-file選項,還能夠代替–ask-vault- pass選項
提示用戶輸入密碼,輸入正確的密碼後,運行加密過的劇本,二者等價。
ansible-playbook --vault-id prompt test.yml
ansible-playbook --ask-vault-pass test.yml

–vault-id選項支持同時使用多個密碼文件進行解密
有兩個yml文件,test.yml和test1.yml

cat test.yml
- hosts: test70
  tasks:
  - debug:
      msg: "message from test"
  - include_tasks: test1.yml
 
cat test1.yml
- debug:
    msg: "message from test1"

兩個密碼文件,分別存放了不同的密碼
echo “123123” > pwdfile
echo “123456” > pwdfile1
分別用兩個密碼文件加密兩個yml文件
ansible-vault encrypt --vault-id pwdfile test.yml
ansible-vault encrypt --vault-id pwdfile1 test1.yml
運行yml時,必須同時提供兩個密碼文件
ansible-playbook --vault-id pwdfile1 --vault-id pwdfile test.yml
一次性使用不同的密碼文件解密不同的文件
ansible-vault decrypt --vault-id pwdfile1 --vault-id pwdfile test.yml test1.yml
使用交互式的方式,一次性的輸入多個文件的解密密碼
ansible-vault view --vault-id prompt --vault-id prompt test.yml test1.yml
-vault-id在加密文件時,給被加密的文件做記號
ansible-vault encrypt --vault-id zsy@pwdfile test.yml
對test.yml文件進行加密,使用pwdfile文件中的內容作爲密碼,同時,在加密test.yml文件時,加入了"zsy"這個小記號,那麼加密完成後,查看加密後的test.yml文件內容,加密後的test.yml的第一行內容的結尾,就是加入的小記號。

cat test.yml
$ANSIBLE_VAULT;1.2;AES256;zsy
............

在交互輸入密碼時添加記號,比如添加一個"記號"
ansible-vault encrypt --vault-id zsythink@prompt test.ym

2. ceate子命令

會提示輸入密碼,確認密碼,然後默認調用vi編輯器,提示輸入內容,輸入的內容將會被保存到test文件中,並且在 退出編輯器時自動將test文件加密,也就是說,create子命令的作用就是創建一個文件,等待寫入內容後使用ansible-vault進行加密。
ansible-vault create test

3. view子命令

使用view子命令,可以查看已經被加密過的文件的原內容,但是不會對文件本身進行還原操作,只是查看原內容。

ansible-vault view test.yml
ansible-vault view --vault-id pwdfile test.yml

4. edit子命令

edit子命令,可以直接修改被加密過的文件的原內容,使用edit子命令修改被加密過的文件內容的過程相當於:先解密、修改原內容,再加密
ansible-vault edit test.yml
ansible-vault edit --vault-id pwdfile test.yml

5. rekey子命令

使用rekey子命令,可以修改被加密文件的密碼
ansible-vault rekey test.yml
一共會提示輸入3次密碼,第一次輸入老密碼,之後兩次輸入新密碼,修改成功後,以後都適用新密碼進行解密。
使用的密碼文件的方式進行的加密,也可以使用rekey子命令重新指定一個新的密碼文件,但是需要藉助"–new- vault-id"選項或者"–new-vault-password-file"選項,通過這兩個選項的任何一個,都可以指定新的密碼文件。
ansible-vault rekey --vault-id pwdfile --new-vault-id pwdfile1 test.yml

6. encrypt_string子命令

2.3版本開始,使用encrypt_string子命令,可以加密"字符串",通過加密字符串的功能,能夠有效的隱藏敏感變量的值。

cat test.yml
- hosts: test71
  vars:
    test_user: "testuser"
    test_passwd: "123456"
  tasks:
  - debug:
      msg: "{{test_user}}"
  - debug:
      msg: "{{test_passwd}}"

加密字符串
ansible-vault encrypt_string 123456
複製這串文本,用這串文本替換playbook中的"123456"
運行一下這個playbook,提示輸入加密時所使用的密碼
ansible-playbook --ask-vault-pass test.yml
ansible-playbook --vault-id prompt test.yml

加密字符串或者解密字符串時,可以使用"–vault-id"選項或者"–vault-password-file"選項指定"密碼文件",以免手動的輸入加密時的密碼
echo aaaa > pwdfile
ansible-vault encrypt_string --vault-id pwdfile 123456
ansible-playbook --vault-id pwdfile test.yml

encrypt_string子命令–name選項,能夠設置加密後的字符串的變量名

ansible-vault encrypt_string --vault-id pwdfile --name test_passwd 123456
test_passwd: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          36396366336238376662353664383836316366383937623830626635613063343764333962376466
          3835646161363364303563373438643732626231303564320a393233333461663562383733643166
          62313362623838336433303032376565343264356665323832623565653631386536383762633764
          3961613265366336300a376564633034376238363664653565316163313739343639643565306665
          6264
Encryption successful

在加密字符串時添加記號
ansible-vault encrypt_string --vault-id zsy@pwdfile --name test_passwd 123456

————Blueicex 2020/3/30 16:00 [email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章