Ansible动态库存组不起作用

时间:2018-09-06 22:33:16

标签: ansible

我正在使用ec2动态清单脚本来解决问题,并创建了一个相当简单的概念证明。这是groupsec2.py旁边的ec2.ini文件的内容:

[tag_classification_server_type_1]

[app_servers:children]
tag_classification_server_type_1

[stage:children]
app_servers

[stage:vars]
environment_name = stage

当我使用该广告资源ping标签组时,它可以按预期工作:

$>ansible -i inventory/stage/ec2.py tag_classification_server_type_1 -m ping --private-key ~/.ssh/foo.pem 
12.345.67.89 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

但是尝试使用已定义的组失败(我在这里显示stage,但是在尝试与app_servers组通信时,输出相同):

$>ansible -i inventory/stage/ec2.py stage -m ping --private-key ~/.ssh/foo.pem
 [WARNING]: Could not match supplied host pattern, ignoring: stage

 [WARNING]: No hosts matched, nothing to do

我以前曾使用ec2在ansible中使用过组,但从未遇到任何问题。我下载了全新的ec2.iniec2.py文件,以确保我没有意外修改它们。

当我检查清单ansible-inventory ec2.py --list时,它确认没有定义的组。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

自然,如果您在一个小时内遇到问题,您将一事无成。但是在StackOverflow上发布,您会在5分钟内自行解决。

最后,如果您希望它尊重groups,则必须传递包含ec2.pyec2.inigroups的整个文件夹,否则它将忽略它们。

因此正确的呼叫是:

$>ansible -i inventory/stage stage -m ping --private-key ~/.ssh/foo.pem

代替:

$>ansible -i inventory/stage/ec2.py stage -m ping --private-key ~/.ssh/foo.pem