2016-07-29 72 views
0

我有一個非常簡單的hosts文件定義主機在Ansible可變hosts文件

[clients] 
qas0062 
[dbs_server] 
qas0063 

對於項目的用戶,我們不想讓他們修改hosts文件,而是我們有一個單獨的user.config.yml文件包含各種用戶可配置的參數。在那裏,我們有條目如

dbs_server: qas0065 

所以,問題是:是否有可能在hosts文件,將使用user.config.yml定義的值用一個變量?格式是什麼?

回答

3

敢肯定你不能在模板化的庫存實際主機密鑰項,但你可以模板化的ansible_host連接var值達到大致相同的效果,如:

[clients] 
clienthost ansible_host="{{ clienthost_var }}" 
[dbs_server] 
dbsserver ansible_host="{{ dbsserver_var }}" 

然後設置在遊戲開始執行之前來自外部變量的那些變量的值(例如,使用vars_files指令或-e)。

+0

感謝您的解決方案,馬特。我今天會嘗試。 – Bostone

+0

優秀!它工作得很漂亮! – Bostone

0

還有另一種方法可以做同樣的事情。我們可以簡單地參考值的主機(庫存)文件,在我們的劇本使用以下語法

host={{ groups['dbs_server'][0] }}

這種運作良好,當你有組中的一個條目(在這種特殊情況下DB_SERVER)