Ansible EC2托pipe脚本缺less实例

出于某种原因,ansible的ec2主机缺less实例。 ec2-describe-instances返回正确的实例,但是/ etc / ansible / hosts不会:

[root@or-manage ec2-user]# ec2-describe-instances | grep seed TAG instance i-ff0b2f36 Name cass-uat-seed [root@or-manage ec2-user]# /etc/ansible/hosts | grep seed [root@or-manage ec2-user]# 

你可以看到,ec2-describe-instances具有我正在寻找的标签的实例,但是有能力的主机却没有。

为什么该实例不在/ etc / ansible / hosts中?


注意:起初,我以为是/etc/ansible/hosts使用了错误的区域,但是我打开了boto debug,它正确的区域:

send: 'POST / HTTP/1.1\r\nAccept-Encoding: identity\r\nContent-Length: 221\r\nContent-Type: application/x-www-form-urlencoded; charset=UTF-8\r\nHost: ec2.us-west-2.amazonaws.com


更新1:

我注意到没有公有IP的任何实例都不会出现在/ etc / ansible / hosts列表中。 为什么会这样?

我不得不调整下面的旋钮(在/etc/ansible/ec2.ini ):

 # This is the normal destination variable to use. If you are running Ansible # from outside EC2, then 'public_dns_name' makes the most sense. If you are # running Ansible from within EC2, then perhaps you want to use the internal # address, and should set this to 'private_dns_name'. The key of an EC2 tag # may optionally be used; however the boto instance variables hold precedence # in the event of a collision. destination_variable = private_dns_name # For server inside a VPC, using DNS names may not make sense. When an instance # has 'subnet_id' set, this variable is used. If the subnet is public, setting # this to 'ip_address' will return the public IP address. For instances in a # private subnet, this should be set to 'private_ip_address', and Ansible must # be run from within EC2. The key of an EC2 tag may optionally be used; however # the boto instance variables hold precedence in the event of a collision. vpc_destination_variable = private_ip_address