未使用ansible角色中的vault文件设置环境变量
我的playbook test.yml如下所示:未使用ansible角色中的vault文件设置环境变量,ansible,ansible-vault,Ansible,Ansible Vault,我的playbook test.yml如下所示: - hosts: localhost connection: local gather_facts: false roles: - env environment: AWS_ACCESS_KEY_ID: "{{ access }}" tasks: - debug: msg: "Hello" 我得到以下错误: 任务[env:加载VPC变量文件] ***************
- hosts: localhost
connection: local
gather_facts: false
roles:
- env
environment:
AWS_ACCESS_KEY_ID: "{{ access }}"
tasks:
- debug:
msg: "Hello"
我得到以下错误:
任务[env:加载VPC变量文件]
********************************************************************************************************致命:[localhost]:失败!=>{failed:true,msg:field
“environment”具有无效值,该值似乎包含
未定义的变量。错误为:“access”为
未定义\n\n该错误似乎已被忽略
“/var/yogesh/test/roles/env/tasks/main.yml”:第1行第3列,但
根据确切的语法,可能\n出现在文件的其他位置
问题。\n\n出现问题的行是:\n\n\n-name:Load VPC
变量文件\n^此处\n}
重演
**********************************************************************************************************************************localhost:ok=0已更改=0无法访问=0
失败=1
我的角色/env/tasks/main.yml如下所示:
- name: Load VPC variables file
include_vars: "vault.yml"
此vault.yml看起来像:
access: 1234
test.yml和vault.yml位于同一目录中
现在,如果我像下面这样更改playbook test.yml,它会以某种方式工作
- hosts: localhost
connection: local
gather_facts: false
vars_files:
- vault.yml
environment:
AWS_ACCESS_KEY_ID: "{{ access }}"
tasks:
- debug:
msg: "Hello"
我不知道为什么会这样。有人能解释一下吗?我们是否必须仅在vars_文件中声明vault文件?是否有更好/最佳实践的替代方案
Ansible版本:2.3.0.0代码正常,错误在2.3.0.0中很容易再现
解决方案:停止使用过时的Ansible版本。如果您确实必须使用2.3.x,请使用。无法升级,将使用vars\u文件。谢谢你的努力。