Ansible动态库存组无法正常工作

问题描述 投票:0回答:1

我正在为ansible使用ec2动态库存脚本,并创建了一个相当简单的概念证明。这是groups文件的内容,它存在于ec2.pyec2.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时,它确认我定义的组不存在。

有任何想法吗?

ansible
1个回答
1
投票

当然,如果你在一个小时内遇到问题,那么你将无处可去。但是发布在StackOverflow上,你会在5分钟内自己弄明白。

如果你想要尊重groups,你必须传递包含ec2.pyec2.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
© www.soinside.com 2019 - 2024. All rights reserved.