我有一个默认计算变量的角色,例如:
port: {{prefix}}{{postfix}}
当我尝试使用
{{hostvars[broker]['port']}}
从另一个角色访问此变量时,我发现错误:AnsibleUndefinedVariable: 'dict object' has no attribute 'port'
在大多数情况下,我需要计算端口,但在极少数情况下,我需要从 host-var 覆盖这个 var。
从另一个角色访问默认变量的最佳方法是什么?
Ansible 版本:2.2.0.0
最佳答案
与 {{hostvars[broker]['port']}}
您只能访问主机事实,角色默认值不是事实,因此只有将端口定义为主机变量,这才有效。
如果您在将您的角色应用到 broker
后绝对需要从其他播放/主机查询端口值主持人,您可以添加到您的角色:
- set_fact:
port: "{{ port }}"
这将确保存在
port
事实存在,因此您可以通过 hostvars
访问它.
关于ansible - 如何从ansible中的另一个角色访问角色的默认变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41676324/