自动化运维-ansible中的管理机密
一、Ansible Vault
在自动化配置管理中,直接以纯文本形式存储密码、API密钥、证书等敏感信息是极大的安全漏洞。Ansible Vault 正是为了解决这一问题而设计的核心功能
Ansible Vault 是 Ansible 的一个核心功能,它允许用户加密任何由 Ansible 使用的结构化数据文件(通常是 YAML 格式)。这可能包括清单变量、playbook中含有的变量文件、在执行playbook时作为参数传递的变量文件,或者ansible角色中定义的变量。
二、如何使用 ansible-vault
命令行工具?
ansible-vault 是创建、编辑、加密、解密和查看文件的主要工具,是一种命令行工具
命令 | 用途 | 示例 |
---|---|---|
create |
创建新的加密文件,默认使用vi编辑 | ansible-vault create test.yml |
view |
查看一个加密文件的内容,但不打开编辑器。 | ansible-vault view test.yml |
edit |
编辑一个已加密的文件。会解密到临时文件,编辑保存后重新加密。 | ansible-vault edit test.yml |
encrypt |
加密一个现有的文件。 | ansible-vault encrypt test.yml |
decrypt |
解密现有的文件 | ansible-vault decrypt test.yml --output=a-secret.yml |
rekey |
更改加密文件的密码或密钥文件。 | ansible-vault rekey test.yml |
-ask-vault-pass | 使用加密后的文件 | ansible-playbook test.yml --ask-vault-pass |
运行任何
ansible-vault
命令或运行使用加密变量的 playbook 时,都需要提供解密密码可以将将密码单独存储在一个权限严格控制的纯文本文件中(如 .vault_pass.txt)
使用
--vault-password-file
或--vault-id
参数指定该文件来适用于自动化
三、使用示例
创建加密文件
加密后,直接使用会报错
[student@master ansible] ansible-vault create test.yml New Vault password: Confirm New Vault password: [student@master ansible] ansible-playbook test.yml
查看加密文件
[student@master ansible] ansible-vault view test.yml Vault password:
编辑加密文件
[student@master ansible] ansible-vault edit test.yml Vault password:
加密现有文件
[student@master ansible] ansible-vault encrypt test1.yml New Vault password: Confirm New Vault password:
解密现有文件
[student@master ansible] ansible-vault decrypt test1.yml Vault password: Decryption successful
更改加密文件密码
[student@master ansible]$ ansible-vault rekey test.yml Vault password: New Vault password: Confirm New Vault password: Rekey successful
使用加密后的文件
[student@master ansible] ansible-playbook test.yml --ask-vault-pass Vault password:
使用密码本创建并使用加密文件
[student@master ansible] vim .vault_pass.txt [student@master ansible] chmod 600 .vault_pass.txt [student@master ansible] ansible-vault create test2.yml --vault-id .vault_pass.txt [student@master ansible] ansible-playbook test2.yml --vault-id .vault_pass.txt