为什么ansible认为这个变量是未定义的?
Why does ansible think this variable is undefined?
我在 /group_vars/
下的 all.yml
中有以下变量:
---
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"}
为什么?
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
我在 /group_vars/
下的 all.yml
中有以下变量:
---
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"}
为什么?
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