如何从ansible中的另一个角色访问角色的默认变量
How to get access to the default variable of the role from another role in ansible
我有一个默认计算变量的角色,例如:
port: {{prefix}}{{postfix}}
当我尝试使用 {{hostvars[broker]['port']}}
从另一个角色访问此变量时,我发现错误:
AnsibleUndefinedVariable: 'dict object' has no attribute 'port'
在大多数情况下,我需要计算端口,但在极少数情况下,我需要从 host-var 覆盖这个 var。
从另一个角色获取默认变量的最佳方式是什么?
Ansible 版本:2.2.0.0
使用 {{hostvars[broker]['port']}}
您只能访问主机事实和角色默认值不是事实,因此只有当您将端口定义为 host-var 时才有效。
如果您在将您的角色应用到 broker
主机后绝对需要从其他 plays/hosts 查询端口值,您可以添加到您的角色:
- set_fact:
port: "{{ port }}"
这将确保 port
事实存在,以便您可以通过 hostvars
.
访问它
我有一个默认计算变量的角色,例如:
port: {{prefix}}{{postfix}}
当我尝试使用 {{hostvars[broker]['port']}}
从另一个角色访问此变量时,我发现错误:
AnsibleUndefinedVariable: 'dict object' has no attribute 'port'
在大多数情况下,我需要计算端口,但在极少数情况下,我需要从 host-var 覆盖这个 var。 从另一个角色获取默认变量的最佳方式是什么?
Ansible 版本:2.2.0.0
使用 {{hostvars[broker]['port']}}
您只能访问主机事实和角色默认值不是事实,因此只有当您将端口定义为 host-var 时才有效。
如果您在将您的角色应用到 broker
主机后绝对需要从其他 plays/hosts 查询端口值,您可以添加到您的角色:
- set_fact:
port: "{{ port }}"
这将确保 port
事实存在,以便您可以通过 hostvars
.