2017-01-16 62 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訪問它。