Ansible - [10] Vault(加密&解密)

 

加密文件

Ansible 有时需要访问一些敏感数据,如密码、Key等

使用ansible-vault可以加密和解密数据

# 创建测试文件
[root@control ansible]# echo 123456 > data.txt
# 加密文件
[root@control ansible]# ansible-vault encrypt data.txt
# 查看文件内容
[root@control ansible]# cat data.txt
# 查看加密文件
[root@control ansible]# ansible-vault view data.txt
# 解密文件
[root@control ansible]# ansible-vault decrypt data.txt

可以通过ansible-vault rekey修改加密的密码

如果角色加密解密每次都输入密码很麻烦,可以将密码写入文件

[root@control ansible]# echo "I'm secret data" >> data.txt
[root@control ansible]# echo 123456 > pass.txt
[root@control ansible]# ansible-vault encrypt --vault-id=pass.txt data.txt
[root@control ansible]# cat data.txt
[root@control ansible]# ansible-vault decrypt --vault-id=pass.txt data.txt
[root@control ansible]# cat data.txt

 

 

使用场景

1、传送敏感数据到远程主机

[root@control ansible]# echo "I'm secret data" >> data.txt
[root@control ansible]# echo 123456 > pass.txt
[root@control ansible]# ansible-vault encrypt --vault-id=pass.txt data.txt

[root@control ansible]# ansible test -m copy --vault-id=pass.txt -a "src=data.txt dest=/tmp/ mode=0600"

2、Playbook调用敏感数据(账号名、密码等)

# Step1: 在变量yml文件中配置用户名和密码
[root@control ansible]# cat ~/ansible/variables.yml
iname: cloud
ipass: '123456'
# Step2: 将变量yml文件加密
[root@control ansible]# ansible-vault encrypt variables.yml
# Step3: 配置playbook用vars_files调用用户名和密码
[root@control ansible]# cat ~/ansible/vault.yml
---
- hosts: test
  vars_files: variables.yml
  tasks:
    - name: include vault data, create user.
      user:
        name: "{{iname}}"
        password: "{{ipass|password_hash('sha512')}}"
# Step4: 执行剧本(询问加密文件的密码,手动输入)
[root@control ansible]# ansible-playbook --ask-vault-pass vault.yml

 

 

 

(END)

posted @ 2024-01-15 17:48  HOUHUILIN  阅读(78)  评论(0编辑  收藏  举报