本文目录导读:

在Ansible中使用Vault加密敏感变量(如密码、密钥等)非常常见,下面是详细的使用方法:
创建加密变量文件
使用ansible-vault命令创建加密文件
# 创建加密文件,会提示设置密码 ansible-vault create secrets.yml # 创建后输入内容,如: db_password: my_secret_password api_key: xxxxxx
加密已有文件
# 加密一个已存在的变量文件 ansible-vault encrypt vars.yml # 查看加密后的内容 cat vars.yml # $ANSIBLE_VAULT;1.1;AES256 # 1234567890abcdef...
解密和编辑加密文件
# 查看解密内容 ansible-vault view secrets.yml # 编辑加密文件 ansible-vault edit secrets.yml # 解密文件(永久解密) ansible-vault decrypt secrets.yml # 更改密码 ansible-vault rekey secrets.yml
在Playbook中使用加密变量
使用vars_files
# playbook.yml
---
- hosts: all
vars_files:
- secrets.yml # 加密的变量文件
tasks:
- name: 使用加密变量
debug:
msg: "数据库密码是 {{ db_password }}"
直接在playbook中使用加密变量
# playbook.yml
---
- hosts: all
vars:
db_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
1234567890abcdef...
tasks:
- name: 使用加密变量
debug:
msg: "密码是 {{ db_password }}"
运行Playbook时提供密码
交互式输入
# 运行时会提示输入vault密码 ansible-playbook playbook.yml --ask-vault-pass
密码文件
# 创建密码文件 echo "my_vault_password" > vault_pass.txt chmod 600 vault_pass.txt # 使用密码文件 ansible-playbook playbook.yml --vault-password-file vault_pass.txt
环境变量
# 设置环境变量 export ANSIBLE_VAULT_PASSWORD_FILE=/path/to/vault_pass.txt # 运行playbook ansible-playbook playbook.yml
最佳实践
目录结构示例
project/
├── group_vars/
│ ├── all/
│ │ ├── vars.yml # 普通变量
│ │ └── vault.yml # 加密变量
│ ├── webservers/
│ │ └── vault.yml # 特定组加密变量
│ └── dbservers/
│ └── vault.yml # 特定组加密变量
├── host_vars/
│ └── db1.example.com/
│ └── vault.yml # 特定主机加密变量
├── playbook.yml
└── vault_pass.txt # 密码文件(不提交到git)
使用Ansible Vault ID(多密码)
# 使用不同的密码ID ansible-vault encrypt --vault-id prod@prompt secrets_prod.yml ansible-vault encrypt --vault-id dev@prompt secrets_dev.yml # playbook中使用 ansible-playbook playbook.yml --vault-id prod@vault_pass_prod.txt --vault-id dev@vault_pass_dev.txt
在ansible.cfg中配置
[defaults] vault_password_file = /path/to/vault_pass.txt
安全注意事项
- 永远不要将vault密码明文提交到版本控制系统
- 在
.gitignore中加入密码文件 - 定期更换vault密码
- 使用强密码(建议至少16位)
- 考虑使用密码管理器或CI/CD的secret存储功能
实际示例
# group_vars/all/vault.yml (加密文件) vault_db_password: MyS3cretP@ssw0rd vault_api_key: abc123def456
# group_vars/all/vars.yml (普通文件) db_user: admin app_name: myapp
# playbook.yml
---
- hosts: all
tasks:
- name: 配置数据库连接
template:
src: config.j2
dest: /etc/myapp/config.yml
vars:
db_password: "{{ vault_db_password }}" # 使用加密变量
这样就能安全地管理敏感变量了!
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播