具有标签和动态库存的Ansible AWS ec2模块返回错误的主机

时间:2017-07-23 15:38:47

标签: amazon-web-services amazon-ec2 ansible

我在同一帐户下有两个VPC,每个VPC都有几个带私有IP的主机。

我有一个标记mobile等于true的主机和另一个标记为Environment的主机等于ci,两者都具有相同的私有IP,但是它们位于不同的VPC中。

当我使用Ansible运行以下标记搜索时:

- name: "install security service"
  hosts: "tag_Environment_{{ env }}:&tag_Service_{{ service }}_true"

使用参数env="ci"service="mobile" 我收回了其中一个主机,即使每个主机都没有这两个标签。

由于它们具有相同的IP,似乎搜索正在合并结果,因此返回只有一个标记的主机。

1 个答案:

答案 0 :(得分:0)

是的,ec2.py广告资源脚本使用vpc_destination_variable参数来命名主机 对于VPC,它通常设置为ec2.ini中的private_ip_address,因此您的广告资源中只能有一个具有相同IP的主机。

为了克服您的情况,您可以尝试使用instance_filters来过滤主机,然后再将其保存到广告资源。

来自ec2.ini的例子:

# Retrieve only instances with (key=value) env=staging tag
# instance_filters = tag:env=staging

# Retrieve only instances with role=webservers OR role=dbservers tag
# instance_filters = tag:role=webservers,tag:role=dbservers

# Retrieve only t1.micro instances OR instances with tag env=staging
# instance_filters = instance-type=t1.micro,tag:env=staging

# You can use wildcards in filter values also. Below will list instances which
# tag Name value matches webservers1*
# (ex. webservers15, webservers1a, webservers123 etc)
# instance_filters = tag:Name=webservers1*