2017-01-16 61 views
1

从另一个角色进入角色的默认变量我有喜欢的默认计算变量的作用:如何获得ansible

port: {{prefix}}{{postfix}} 

当我尝试从{{hostvars[broker]['port']}}另一个角色可以访问这个变量,我赶上错误:

AnsibleUndefinedVariable: 'dict object' has no attribute 'port' 

在大多数情况下,我需要计算的端口,但在极少数情况下,我需要重写从主机变种这个变种。 从另一个角色访问默认var的最佳方式是什么?

Ansible版本:2.2.0.0

+0

您不应该依赖其他角色的默认值。当您使用等变量构建角色时,请尝试给它们使用相同的名称,以便为两个角色定义一次。 –

回答

1

随着{{hostvars[broker]['port']}},你只能访问主机的事实和角色默认不是事实,所以如果你定义端口主机VAR这只会工作。

如果您确实需要申请你的角色broker主机后,查询到其他戏剧/主机的端口值,您可以添加到您的角色:

- set_fact: 
    port: "{{ port }}" 

这将确保有port事实上是存在的,所以你可以通过hostvars访问它。