【发布时间】:2018-09-14 10:10:15
【问题描述】:
我的最终目标是使用用作常量的变量加载一些哈希(或字典)。一个专门的角色似乎非常适合这个目的,因为它可以在许多剧本中重复使用。 Ansible 文档中的Using Roles 章节说:
- 如果 roles/x/vars/main.yml 存在,则其中列出的变量将添加到 play 中。
这意味着通过导入角色加载的变量应该在后续任务/角色的播放范围内可用。一切都很完美。
但我无法按预期工作(Ansible 2.4.2):
$ ansible-playbook $HOSTS test.yaml
PLAY [local] **************************************
TASK [constants : debug] **************************
ok: [local] => {
"myvar": "myvar contents"
}
TASK [debug] **************************************
ok: [local] => {
"myvar": "VARIABLE IS NOT DEFINED!"
}
...
$ cat test.yaml
- hosts: local
tasks:
- import_role:
name: constants
- debug: var=myvar
$ cat roles/constants/vars/main.yml
myvar: myvar contents
$ cat roles/constants/tasks/main.yml
- debug: var=myvar
我做错了什么?
注意:我确实向角色添加了一个任务,只是为了检查变量是否在角色内部定义。对于我的场景,我不需要任何任务,只需要变量。
【问题讨论】:
标签: ansible ansible-2.x ansible-role