2016-01-20 76 views
0

我要生成一個文件,該文件是在兩個主機相同,同時包含主機名,如:如何在單個模板中使用多個主機名?

resource r0 { 
    on host01 { 
    device /dev/drbd0; 
    } 
    on host02 { 
    device /dev/drbd0; 
    } 
} 

我試圖用一個模板來實現這個功能,比如下面:

resource r0 { 
    on {{ hostvars[groups['hosts'][0]]['ansible_nodename'] }} { 
    device /dev/drbd0; 
    } 
    on {{ hostvars[groups['hosts'][1]]['ansible_nodename'] }} { 
    device /dev/drbd0; 
    } 
}  

這適用於第一個變量,但該列表沒有第二個元素,因此第二個變量未知。

如何獲取主機列表,以便我可以從列表中單獨選擇每個主機?

編輯:庫存的相關位是

[hosts] 
host01 
host02 

編輯:

我下面的作品的答案,如果我只需要主機名。不過,我也需要 某個接口的IP地址。

我該如何訪問hostvars中的信息,而不是當前主機的 ?

+0

您還可以添加您的庫存文件(或其相關代碼片段)嗎? – ydaetskcoR

回答

0

下面做什麼,我想:

resource r0 { 
    on {{ groups['hosts'][0] }} { 
    device /dev/drbd0; 
    } 
    on {{ groups['hosts'][1] }} { 
    device /dev/drbd0; 
    } 
}  

編輯:

要訪問比當前其他主機,例如IP地址的變量,在劇本必須包括在hosts其他主機指令。我正在測試一個只能運行一臺主機的劇本,因此無法訪問有關其他主機的信息。您仍然可以像這樣運行測試,但您需要對其他主機執行虛擬操作,如下所述:https://serverfault.com/a/639269/144800,以便收集其他主機的事實。

相關問題