2016-02-29 74 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被定义”