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 上使用 Jinja2 的 if 表达式(内联 if-else)中的连接不起作用