我的剧本(test.yml
)如下所示:
- hosts: localhost
connection: local
gather_facts: false
roles:
- env
environment:
AWS_ACCESS_KEY_ID: "{{ access }}"
tasks:
- debug:
msg: "Hello"
我收到以下错误:
任务 [env : 加载 VPC 变量文件] ***************************************** ****************************************************** *************致命:[本地主机]:失败!=> {"failed": true, "msg": "'environment' 字段的值无效,似乎包含未定义的变量。错误是:'access' is undefined\n\n错误似乎是已在“/var/yogesh/test/roles/env/tasks/main.yml”中:第 1 行第 3 列,但可能\n在文件中的其他位置,具体取决于确切的语法问题。\n\n出现问题的行为:\n\n\n- 名称:加载 VPC 变量文件\n ^ here\n"}
播放回顾 ************************************************ ****************************************************** ************************************ 本地主机:正常=0 更改=0 无法访问=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 中声明 Vault 文件?有没有更好/最佳实践的选择?
Ansible 版本:2.3.0.0