为什么ansible认为这个变量是未定义的?

为什么ansible认为这个变量是未定义的?,ansible,ansible-2.x,Ansible,Ansible 2.x,我在/group\u 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文件的第一个任

我在
/group\u 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\u repo
是在
全局词典中定义的。因此,您需要将其引用为
{{global\uuuuuu.package\u repo}
,但由于您是从同一个字典中引用的,因此将在模板字符串中检测到错误
递归循环。不能从同一数据结构中引用,但是从另一数据结构中引用应该可以工作

因此,您需要在另一个结构中定义
package\u repo
,以便在
global\uuu.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


package\u repo
global\uu
字典中定义。因此,您需要将其引用为
{{global\uuuuuu.package\u repo}
,但由于您是从同一个字典中引用的,因此将在模板字符串中检测到错误
递归循环。不能从同一数据结构中引用,但是从另一数据结构中引用应该可以工作

因此,您需要在另一个结构中定义
package\u repo
,以便在
global\uuu.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


试着引用变量值试着引用变量值,这很不幸。在
全局范围之外定义它实际上不是一个选项,因为它会破坏已设置的范围的连续性。谢谢你提供的信息!嗯,那太不幸了。在
全局范围之外定义它实际上不是一个选项,因为它会破坏已设置的范围的连续性。谢谢你提供的信息!