2017-03-07 80 views
0

我使用ec2.py和EC2實例特定的標記,讓我的主人從動態庫存主機/標籤,結果顯示爲IP地址的列表,例如:ansible - 定義主機文件

結果從ec2.py:

"tag_test_staging": [ 
    "10_80_20_47" 
    ], 

我在劇本- hosts: tag_Name_test定義標籤,它是在所有的情況下,與tag_Name_test運行。

有沒有辦法在inventory/文件夾下定義hosts文件中的hosts /標記,並且該playbook將從那裏獲取主機,而不是像現在一樣直接在playbook上指定ec2標記?

任何建議,將不勝感激。

回答

2

你已經走向了正確的方向。

假設您通過ec2.py獲得了動態庫存,並且它的庫存量爲tag_test_staging。因此,您可以構建庫存文件夾和文件,如下所示

inventory 
    staging 
    hosts 
    group_vars 
     all.yml 
     tag_test_staging.yml 
     tag_Name_test.yml 

您在每個YAML文件中添加變量define。 tag_test_staging.yml中的變量將僅應用於具有該標籤的實例。

所以現在你可以將你的劇本爲:

ansible-playbook -i inventory/staging your_playbook.yml 

有關於如何use dynamic inventory with clouds最佳實踐文檔,請看看爲好。

+0

謝謝,我是新來的ansible,所以我怎麼能把它定義爲YAML文件中的變量? – Berlin

+0

這實際上是我的問題 - 我可以如何在清單文件上定義變量,而不是在劇本中定義' - hosts:tag_Name_test' – Berlin