2017-04-21 44 views
0

我有這個清單文件在Ansible,我怎麼在模板

庫存/ hosts_elk

[elk-client-0] 
10.11.22.22 

現在我有一個模板,我想這樣做,使用變量在清單文件

elk_server.yml.j2

elk_server = {{ elk-client-0 }} 

但是,這並不工作,這是價值{{麋鹿客戶0} }不會被替換。

什麼是正確的語法,所以當模板獲取服務器上的佈局方式,生成的文件看起來像

elk_server = 10.11.22.22 

回答

0

神奇的語法是

elk_server: {{ groups['elk-client-0'][0] }} 
0

我認爲你正在尋找​​和/或ansible_hostnamehttp://docs.ansible.com/ansible/playbooks_variables.html

+0

也許吧,但該頁面不顯示如何在模板中使用它。 –

+0

'elk_server = {{inventory_hostname}}'爲你工作嗎? – wilkesybear

+0

不可以。注意我運行Ansible操作系統的主機不是elk-client-0,而是另一個需要連接到elk-client-0的主機。所以我需要從結果文件中的庫存文件中替換elk-client-0的IP。 –

0

完全清單條款,elk-client-0是一個主機組,可通過groups.<name>訪問。 具體來說,您要查找的第一個(或最後?)清單中的主機,特定主機組的,所以在模板中,你可以這樣做:

elk_server = {{groups.elk-client-0|random}} 

本作的「現在」總是會返回1項。 但是當你的主人組成長時,它會擲骰子。 如果您需要總是採取first,last,只使用這些過濾器。

+0

此外,我通常避免在主機組名稱中添加' - '字符。 b/c例如在AWS中,動態庫存腳本'ec2.py'對主機組名進行「標準化」,將所有內容轉換爲'_'(空格,' - '等等), –

+0

謝謝,但那也行不通,那就是,我只是在結果文件中看到elk_serer = {{groups.elk-client-0 | random}},因此找不到該變量。 –