You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Ansible Vault自动传递become及SSH密码实现Playbook自动化?

解决Ansible Playbook通过Cron自动运行的凭据管理问题

首先纠正你一个关键误解:--vault-password-file参数指定的是用来解密Vault加密文件的密码文件,而非你创建的Credentials.yml加密文件本身。Credentials.yml是存储敏感变量的加密文件,需要用Vault密码来解密它。

1. 编写加密的Credentials.yml变量文件

Credentials.yml采用标准YAML格式,用来存储你的become密码和SSH密码变量:

# 加密前的明文内容(执行ansible-vault edit时输入)
ansible_become_pass: "你的sudo/become密码"
ansible_ssh_pass: "你的SSH登录密码"

如果已经创建了空的加密文件,可通过ansible-vault edit Credentials.yml命令输入Vault密码后,编辑上述内容保存。

2. 创建Vault密码文件(用于自动解密)

创建一个纯文本文件(比如~/.ansible_vault_pass),仅存储你加密Credentials.yml时设置的Vault密码,然后设置严格权限防止其他用户读取:

echo "你的Vault解密密码" > ~/.ansible_vault_pass
chmod 600 ~/.ansible_vault_pass

3. 在Playbook中集成加密变量

有两种常用方式:

方式一:在Playbook中直接引入变量文件

修改BackupLogsX.yml,在开头添加vars_files字段:

---
- name: 日志备份Playbook
  hosts: all
  vars_files:
    - /path/to/Credentials.yml  # 指向你的加密变量文件路径
  tasks:
    # 你的任务内容...

方式二:命令行指定变量文件

若不想修改Playbook,运行时通过参数指定:

ansible-playbook --vault-password-file ~/.ansible_vault_pass --vars-file /path/to/Credentials.yml BackupLogsX.yml

4. 配置Cron Job实现自动运行

用crontab -e编辑定时任务,添加每周运行的规则(示例为每周日凌晨2点):

0 2 * * 0 /usr/bin/ansible-playbook --vault-password-file /home/你的用户名/.ansible_vault_pass --vars-file /path/to/Credentials.yml /path/to/BackupLogsX.yml >> /var/log/ansible_backup.log 2>&1
  • 替换所有路径为实际路径,用户名改为你的系统用户名
  • 追加日志输出便于后续排查问题

5. 安全注意事项

  • 确保Vault密码文件权限为600,仅当前用户可读取
  • 禁止将加密的Credentials.yml或Vault密码文件提交到版本控制系统
  • 若服务器为多用户环境,优先使用SSH密钥替代密码登录,进一步提升安全性

内容的提问来源于stack exchange,提问作者Eridith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:02:18