【RH294知识点汇总】第 3 章 《 管理变量和事实 》2
目录第二部分Ansible Vault - 机密管理2.1 为什么需要 Vault2.2 Vault 命令速查表2.3 在 Playbook 中使用加密文件方式一交互式输入密码方式二使用密码文件方式三Playbook 中引用加密变量2.4 最佳实践分文件存储第二部分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.yml2.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为什么分文件 只加密敏感信息不影响普通变量查看 易于审计明确哪些文件包含机密 性能更优不需要解密整个配置