自動化運維-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