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

如何使用Ansible Vault从文件传递remote_user账号密码避免手动输入

实现方案

步骤1:创建加密的凭据存储文件

使用Ansible Vault创建加密的变量文件,避免明文存储密码,执行命令:
ansible-vault create secrets.yml
执行后会提示你设置Vault的加密密码,设置完成后会自动打开编辑器,在里面写入以下内容:

# 远程SSH连接密码
ansible_ssh_pass: "你的实际SSH密码"
# 远程sudo提权密码
ansible_become_pass: "你的实际sudo密码"

保存退出后,secrets.yml会被自动加密,不会泄露明文密码。

步骤2:改造Playbook引入加密变量文件

修改原有Playbook,增加vars_files配置引入刚才创建的加密凭据文件,修改后的Playbook如下:

-
  name: Sample playbook
  hosts: remotehosts
  remote_user: tom
  become: yes
  gather_facts: no
  # 新增:引入加密的凭据文件
  vars_files:
    - secrets.yml

  tasks:
  - name: Ensure directory is present in remote hosts 
    file: path=/usr/local/tom_dir state=directory

  - name: Copy the script to the remote hosts
    copy: src=sample_check.sh dest=/usr/local/tom_dir mode=0755

步骤3:执行Playbook的两种方式

方式1:单次执行仅输入Vault密码

执行命令时去掉原有的-k -K参数,替换为--ask-vault-pass参数,每次执行仅需要输入一次之前设置的Vault加密密码即可:
ansible-playbook -i inventory.ini sample_playbook.yml --ask-vault-pass

方式2:完全免手动输入(适合自动化场景)

如果不需要每次输入任何密码,可以把Vault密码存储到一个只有当前用户可读的本地文件中:

  • 创建Vault密码文件:echo "你设置的Vault加密密码" > ~/.ansible_vault_pass
  • 严格设置文件权限避免泄露:chmod 600 ~/.ansible_vault_pass
  • 执行Playbook时指定密码文件路径即可,无需输入任何密码:
    ansible-playbook -i inventory.ini sample_playbook.yml --vault-password-file ~/.ansible_vault_pass

安全注意事项

  • 存储Vault密码的本地文件必须设置600权限,仅限所属用户读写,禁止开放给其他用户访问
  • 加密后的secrets.yml可以正常提交到代码仓库,不会泄露明文凭据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:36:09