2016-02-29 77 views
0

我正在編寫一個劇本來驗證我們的Cloud Formation堆棧(端口80打開,httpd.conf有正確的設置,實例類型是否正確等)。唯一令我感到沮喪的是如何驗證EC2標籤。ansible ec2.py/boto EC2驗證

key=Name, value=testec2 

我試過下面的,並改變了當條件多種不同的方式。

- name: Check Name Tag 
    action: debug msg="Name Tag Exists." 
    when: "ec2_tag_Name" 

[例子試圖]

when: "tag_Name_testec2" 
when: " ec2_tag_Name_testec2" 
when: "ec2_tag_Name" 

其實我已經嘗試了不少品種較多,但這些都是我可以很容易地記住了我的頭頂。

當我運行

「ec2.py --list」它輸出標籤

"ec2_tag_Name": "testec2", 
"tag_Name_testec2": [ 

任何建議,將不勝感激的多種格式。

+0

您的問題不清楚。您是否試圖檢查'tag:Name'作爲'testec2'的實例是否在庫存中? – helloV

+0

建立一個堆棧後,我正在寫一個劇本來驗證。對於標籤,我正在驗證某些鍵是否存在。值不重要,但如果我可以驗證鍵和值,那將是最棒的。 –

回答

0

我使用tag_Name_testec2,但這是hostsvars中的一個組。不是一個常見變量。爲了避免麻煩,在你ec2.ini,緩存最大年齡第一個變化,從20到1:

cache_max_age = 1

,看看你有一個像區域或公共或私有IP過濾一些。

你可以調試你HOSTVARS用這種方式:

[[email protected] myproject]$ ansible -i ec2.py tag_Name_webserver -u ec2-user -m debug -a msg="{{ hostvars[inventory_hostname]['ec2_id'] }}" -vvv 
Using /etc/ansible/ansible.cfg as config file 
10.78.17.117 | SUCCESS => { 
    "msg": "i-b34cb736" 
} 
+0

謝謝勞爾的建議。我會嘗試cache_max_age並回報。 –

0

如果有人有興趣,我終於想通了。隨意指出並笑,因爲沒有注意到「被定義」缺失。

name:Check Name Name Tag Types action:debug msg =「存在名稱標記。」 當:「ec2_tag_Name被定義」