我的剧本( test.yml
)如下:
- 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”:“字段'环境'有一个无效值,似乎包含一个未定义的变量 . 错误是:'access'未定义\ n \ n出现错误已经在'/var/yogesh/test/roles/env/tasks/main.yml':第1行第3列,但可能在文件的其他位置,具体取决于确切的语法问题 . \ n \ n出现有问题的行将:\ n \ n \ n-名称:加载VPC变量文件\ n ^此处\ n“}播放回放********** ************************************************** ************************************************** ****** localhost:ok = 0 changed = 0 unreachable = 0 failed = 1
我的角色( roles/env/tasks/main.yml
)如下所示:
- name: Load VPC variables file
include_vars: "vault.yml"
这 vault.yml
看起来像:
access: 1234
test.yml
和 vault.yml
位于同一目录中 .
现在,如果我改变下面的剧本 test.yml
,不知何故它的工作原理 .
- hosts: localhost
connection: local
gather_facts: false
vars_files:
- vault.yml
environment:
AWS_ACCESS_KEY_ID: "{{ access }}"
tasks:
- debug:
msg: "Hello"
我不知道为什么会这样 . 有人可以说清楚这个吗?我们是否必须仅在vars_files中声明保管库文件?有没有更好/最佳实践的选择?
Ansible版本:2.3.0.0
1 回答
代码没问题,错误很容易在2.3.0.0中重现 .
Solution :停止使用过时的Ansible版本 . 如果您真的必须使用2.3.x,请使用Ansible 2.3.2 .