【RH294知识点汇总】第 3 章 《 管理变量和事实 》2
·
目录

第二部分:Ansible Vault - 机密管理
2.1 为什么需要 Vault?
# ❌ 危险!密码明文存储
database_password: "MySecurePass123"
api_key: "sk-abc123def456"
ssh_private_key: "-----BEGIN RSA PRIVATE KEY-----"
# ✅ 安全!使用 Vault 加密
# 这些文件被 AES256 加密,无法直接读取
Vault 的核心价值:
-
🔐 AES256 对称加密,军事级安全
-
🔑 防止敏感信息在代码库中泄露
-
🛡️ 支持密码文件、交互式输入等多种认证方式
2.2 Vault 命令速查表
# 1️⃣ 创建加密文件(会要求输入密码)
ansible-vault create secrets.yml
# 2️⃣ 查看加密文件内容(需要密码)
ansible-vault view secrets.yml
# 3️⃣ 编辑加密文件
ansible-vault edit secrets.yml
# 4️⃣ 加密已存在的文件
ansible-vault encrypt existing.yml
# 5️⃣ 解密文件(永久)
ansible-vault decrypt secrets.yml
# 6️⃣ 修改加密密码
ansible-vault rekey secrets.yml
2.3 在 Playbook 中使用加密文件
方式一:交互式输入密码
ansible-navigator run playbook.yml --vault-id @prompt
# 运行时会提示输入密码
方式二:使用密码文件
# 1. 创建密码文件(只有自己可读)
echo "my_vault_password" > ~/.vault_pass
chmod 600 ~/.vault_pass
# 2. 运行 Playbook
ansible-navigator run playbook.yml --vault-password-file=~/.vault_pass
方式三:Playbook 中引用加密变量
# vars/secrets.yml (已加密)
db_password: "super_secret_123"
api_key: "sk-abc123"
# playbook.yml
---
- name: 使用加密变量
hosts: all
vars_files:
- vars/secrets.yml # 自动解密
tasks:
- name: 连接数据库
mysql_user:
name: admin
password: "{{ db_password }}"
2.4 最佳实践:分文件存储
project/
├── vars/
│ ├── common.yml # 普通变量(未加密)
│ └── secrets.yml # 敏感变量(已加密)
├── host_vars/
│ └── db01.yml # 包含密码(已加密)
└── playbook.yml
为什么分文件?
- 🎯 只加密敏感信息,不影响普通变量查看
- 🔍 易于审计,明确哪些文件包含机密
- 🚀 性能更优,不需要解密整个配置
更多推荐
所有评论(0)