我的剧本(test.yml
)如下所示:
- hosts: localhost
connection: local
gather_facts: false
roles:
- env
environment:
AWS_ACCESS_KEY_ID: "{{ access }}"
tasks:
- debug:
msg: "Hello"
我得到以下错误:
TASK [env:加载VPC变量文件] ************************************************** ************************************************** ****致命:[localhost]:失败! => {“失败”:是的,“msg”:“该字段 'environment'具有无效值,似乎包含a 未定义的变量。错误是:'access'是 undefined \ n \ n错误似乎已经出现 '/var/yogesh/test/roles/env/tasks/main.yml':第1行,第3列,但 可能在文件的其他位置,具体取决于确切的语法 问题。\ n \ n违规行似乎是:\ n \ n \ n-名称:加载VPC 变量文件\ n ^ here \ n“}
PLAY RECAP ************************************************** ************************************************** ****************************** localhost:ok = 0 changed = 0 unreachable = 0
失败= 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