Ansible AWS 动态清单实例过滤器不起作用

Posted

技术标签:

【中文标题】Ansible AWS 动态清单实例过滤器不起作用【英文标题】:Ansible AWS dynamic inventory instance filters not working 【发布时间】:2020-02-22 03:03:49 【问题描述】:

我已经根据https://aws.amazon.com/blogs/apn/getting-started-with-ansible-and-dynamic-amazon-ec2-inventory-management/ 为 Ansible 设置了亚马逊的动态库存。我可以获取此帐户上每个 EC2 实例的清单,但我想使用标签对其进行过滤。我在我的 ec2.ini 中设置了instance_filters,但脚本仍然返回整个库存。

instance_filters = tag:environment=qa
ansible all -i ec2.py -m ping

我还确保设置了指向 ec2.ini 的环境变量。

export EC2_INI_PATH=/path/to/ec2.ini/its/different/on/my/machine/I/swear

我缺少哪些实际过滤 EC2 实例的步骤/配置?

【问题讨论】:

请说明如何标记 EC2 实例以防万一? 知道aws ec2 describe-instances --filter Name=tag,Values=environment=qa 必须说什么也很有趣,因为您可能期望的列表比实际返回的列表要短。您也可以手动运行该库存以确保您和它在同一页面上EC2_INI_PATH=whatever python ./ec2.py --list 也许您使用的是不同版本的 aws 实用程序,但我必须使用以下语法:aws ec2 describe-instances --filter Name=tag:environment,Values=qa 【参考方案1】:

instance_filters 配置按预期工作。问题是我选择的额外“主机”实际上是 ElasiCache 集群。为了从库存中排除这些,我必须将以下配置添加到 ec2.ini。

elasticache = False

【讨论】:

以上是关于Ansible AWS 动态清单实例过滤器不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 Ansible 动态清单中,如何按标签过滤主机?

Ansible剧本管理(实例解释!!!)

Ansible 清单可以包含另一个清单吗?

在 Ansible 上使用 Jinja2 的 if 表达式(内联 if-else)中的连接不起作用

AWS ec2 根卷增加:在 aws ubuntu 实例上扩展弹性根卷不起作用

尝试为 Azure 使用 Ansible 动态清单插件时出错