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]

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