能否在Ansible Playbook中指定加密Inventory文件的密码?
关于在Playbook内指定加密Inventory文件密码的问题
核心结论:没办法直接在Playbook的YAML代码里指定加密Inventory的解密密码——因为Ansible会先加载并解密Inventory文件,之后才会处理Playbook内容,时机上根本赶不上。
不过有两种安全的替代方式可以实现自动提供密码,不用每次手动输入:
用环境变量传递密码
执行Playbook前先设置环境变量,让Ansible自动读取:export ANSIBLE_VAULT_PASSWORD="你的Inventory解密密码" ansible-playbook -i 加密的inventory文件.yml 你的playbook.yml注意:这种方式密码会明文出现在环境变量里,仅适合测试环境,生产环境别用。
用密码脚本/加密变量文件
- 写一个能输出解密密码的脚本(比如
vault_pass.sh),给脚本加执行权限:#!/bin/bash # 这里可以写逻辑从安全存储(比如密钥管理服务)获取密码,示例直接输出 echo "你的Inventory解密密码" - 执行Playbook时指定这个脚本:
ansible-playbook -i 加密的inventory文件.yml --vault-password-file vault_pass.sh 你的playbook.yml
或者在
ansible.cfg里配置默认的密码脚本路径,以后执行就不用每次加参数了:[defaults] vault_password_file = ./vault_pass.sh- 写一个能输出解密密码的脚本(比如
重要提醒:绝对不要把密码明文写在Playbook或者未加密的文件里,这会直接导致敏感信息泄露,生产环境一定要用加密或安全的密钥管理方式。
内容的提问来源于stack exchange,提问作者Arun Swiftz -1
相关产品推荐
相关产品推荐

