我正在使用ansible的ec2 dynamic inventory脚本,并创建了一个相当简单的概念证明。这是ec2.py和ec2.ini旁边的groups文件的内容
[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时,它确认我定义的组不在那里。
有什么想法吗?
发布于 2018-09-07 06:42:10
当然,如果你在一个问题上挣扎了一个小时,你将一事无成。但是把它发布到StackOverflow上,你会在5分钟内弄清楚。
最后,如果你想让它遵守groups,你必须传递包含groups、ec2.py和ec2.ini的整个文件夹-否则它会忽略它们。
所以正确的调用是:
$>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.pemhttps://stackoverflow.com/questions/52212922
复制相似问题