【发布时间】:2019-01-30 10:09:17
【问题描述】:
我们有一个使用 EC2 动态清单的 Ansible 服务器:
- https://github.com/ansible/ansible/blob/devel/contrib/inventory/ec2.py
- https://github.com/ansible/ansible/blob/devel/contrib/inventory/ec2.ini
但是,根据我们拥有的实例数量,运行 ./ec2.py --list 或 ./ec2.py --refresh-cache 会返回 28,000 行 JSON 响应。
我假设这会导致它随机失败(返回 Python 堆栈跟踪),因为它在向 AWS 发送调用时只收到部分响应,但如果再次运行就可以了。
这就是为什么我想知道是否有办法减少这种情况。
我知道有一种方法可以在 ec2.ini 中按标签包含特定实例(即# instance_filters = tag:env=staging),但使用
我们的实例被标记的方式,有没有办法排除
而是实例(类似于:# instance_filters = tag:name=!dev)?
【问题讨论】:
-
我认为这会导致它随机失败(返回 Python 堆栈跟踪) 您是否打开了 ansible 显示该堆栈跟踪的问题?因为你可能解决了错误的问题——我可以理解一个巨大的 JSON blob 看起来很难看,但对于计算机来说这应该不是问题,特别是如果
cache_max_age是一个合理的值 -
如果库存随机失败,我将支持@MatthewLDaniel 的评论,这不是预期的行为,因此请将其报告给 Ansible github 存储库。
标签: amazon-ec2 ansible ansible-inventory