我在all.yml
下的/group_vars/
中有以下变量:
---
global__:
app_user: root
app_group: root
maven_repo: http://my.endpoint.a
package_repo: http://my.endpoint.b
java:
sourceUrl: "{{package_repo}}/java/"
version: 1.8.0_25
但是,当我进入扩展此var文件的第一个任务时,我得到以下输出:
FAILED! => {"failed": true, "msg": "ERROR! ERROR! 'package_repo' is undefined"}
为什么?
答案 0 :(得分:2)
package_repo
在global__
字典中定义。因此,您需要将其引用为{{ global__.package_repo }}
,但由于您在同一个字典中引用,因此您将收到错误recursive loop detected in template string
。您不能在同一数据结构中引用,但是从另一个数据结构引用应该可以工作。
因此,您需要在另一个结构中定义package_repo
,以便在global__.java.sourceUrl
变量中引用它,例如以下方法可行:
package_repo: http://my.endpoint.b
global__:
app_user: root
app_group: root
maven_repo: http://my.endpoint.a
java:
sourceUrl: "{{package_repo}}/java/"
version: 1.8.0_25
或
other_map:
package_repo: http://my.endpoint.b
global__:
app_user: root
app_group: root
maven_repo: http://my.endpoint.a
java:
sourceUrl: "{{other_map.package_repo}}/java/"
version: 1.8.0_25