Ansible 的自动化运维(二)文件加密
Ansible 的自动化运维(二)文件加密
1、简介
Ansible 可能需要访问密码或 API 密钥等敏感数据,以便能配置远程服务器,通常,此信息可能以纯文本形式存储在变量清单或其他 Ansible文件中。但若如此,任何有权访问 Ansible 文件的用户或存储这些Ansible 文件的版本控制系统都能够访问此敏感数据。这显然存在安全风险。我们可以使用 Ansible Vault,它由 Ansible 提供,可以加密和解密任何由Ansible 使用的结构化数据文件。若要使用 Ansible Vault,可以通过一个名为 ansible-vault 的命令行工具创建、编辑、加密、解密和查看文件。Ansible Vault 可以加密任何由 Ansible 使用的结构化数据文件。加密的这些文件可能包括清单变量或者密码的信息。
值得注意的事
Ansible Vault 并不实施自有的加密函数,而是使用外部Python 工具集。文件通过利用 AES256 的对称加密加以保护。请注意,这种方式尚未得到第三方正式审核。
2、创建加密文件
-
要创建新的加密文件,可使用命令 ansible-vault create filename。
-
该命令将提示输入新的 vault 密码,同时利用默认的编辑器 vi 打开文件
[root@10-60-249-255 yaml]# ansible-vault create wdxx.yml
New Vault password:
Confirm New Vault password:
[root@10-60-249-255 yaml]# cat wdxx.yml
$ANSIBLE_VAULT;1.1;AES256
35386630663832373861326264333833326339623234316362363433303965323733396333613135
3431613737353335386432623532326563333563353136640a656131363437633564616235343062
65303063303232613763333165626230643666373833323734356330313230323133623737313239
3030623234663863320a643138646166616663343636333861353635386233626261666461303536
38623038376332383533633364343830313233366263656261626362313063336564
3、查看加密的文件
Ansible Vault 使用 ansible-vault view filename 命令查看加密的文件,而不必打开它进行编辑。
[root@10-60-249-255 yaml]# ansible-vault view wdxx.yml
Vault password:
- name: huqi
- age: 28
4、编辑现有的加密文件
-
要编辑现有的加密文件,Ansible Vault 提供了 ansible-vault edit filename 命令。
-
此命令将文件解密为一个临时文件,并允许用户编辑该文件。保存时,它将复制其内容并删除临时文件
注意:edit 子命令会改写文件,因此仅可在进行更改时使用它。若要查看文件的内容而不进行更改,始终应使用 view 子命令。
[root@10-60-249-255 yaml]# ansible-vault edit wdxx.yml
Vault password:
实例:
[root@10-60-249-255 yml]# cat nginx.yml
- hosts: wd
remote_user: root
tasks:
- name: tmp
shell: touch /tmp/a.txt
5、解密现有的文件
-
已存在的加密文件可以通过 ansible-vault decrypt filename 命令永久解密。
-
在解密单个文件 时,可使用 --output 选项以其他名称保存解密的文件。
[root@10-60-249-255 yaml]# ansible-vault decrypt wdxx.yml
#下面这个不用演示了
[root@10-60-249-255 yaml]# ansible-vault decrypt wdxx.yml --output=wdxx02.yml
6、更改加密文件的密码
-
可以使用命令 ansible-vault rekey filename 更改 vault 密码。
-
此命令可一次性更新多个数据文件的密钥。它将要求提供原始密码和新密码。
-
在使用 vault 密码文件时,使用 --new-vault-password-file 选项。
[root@10-60-249-255 yaml]# ansible-vault rekey wdxx.yml
Vault password:
New Vault password:
Confirm New Vault password:
Rekey successful
7、Playbook 和 Ansible Vault
-
为了运行可访问通过 Ansible Vault 加密的文件的 playbook,需要向 ansible-playbook 命令提供其加密密码。如果运行命令时没有这么做,它将返回错误。
[root@10-60-249-255 yaml]# ansible-playbook huqi.yml
ERROR! Attempting to decrypt but no vault secrets found
-
若要以交互方式提供 vault 密码,可使用 --vault-id @prompt选项
[root@10-60-249-255 yaml]# ansible-playbook --vault-id @prompt huqi.yml
Vault password (default):
注意:
Ansible 2.4 版本以前,需要使用 --ask-vault-pass 选项
[root@10-60-249-255 yaml]# ansible-playbook --ask-vault-pass huqi.yml
Vault password:
欢迎大家扫码关注:
本公众号只写原创,不接广告、不接广告、不接广告。下期小伙伴想学习什么技术,可以私信发我吆。