我正在使用ec2动态清单脚本来解决问题,并创建了一个相当简单的概念证明。这是groups
和ec2.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.ini
和ec2.py
文件,以确保我没有意外修改它们。
当我检查清单ansible-inventory ec2.py --list
时,它确认没有定义的组。
有什么想法吗?
答案 0 :(得分:1)
自然,如果您在一个小时内遇到问题,您将一事无成。但是在StackOverflow上发布,您会在5分钟内自行解决。
最后,如果您希望它尊重groups
,则必须传递包含ec2.py
和ec2.ini
和groups
的整个文件夹,否则它将忽略它们。
因此正确的呼叫是:
$>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