Skip to content

Commit

Permalink
Merge pull request ansible#9825 from kalefranz/ec2-inventory-tags
Browse files Browse the repository at this point in the history
Allow ec2 tags to be used to address servers in ec2 dynamic inventory.
  • Loading branch information
bcoca committed Feb 2, 2015
2 parents d7f5979 + 28e69b9 commit 5eafa1e
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 4 deletions.
7 changes: 5 additions & 2 deletions plugins/inventory/ec2.ini
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,17 @@ regions_exclude = us-gov-west-1,cn-north-1
# 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'.
# 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 = public_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 with EC2.
# be run from with 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 = ip_address

# To tag instances on EC2 with the resource records that point to them from
Expand Down
8 changes: 6 additions & 2 deletions plugins/inventory/ec2.py
Original file line number Diff line number Diff line change
Expand Up @@ -385,9 +385,13 @@ def add_instance(self, instance, region):

# Select the best destination address
if instance.subnet_id:
dest = getattr(instance, self.vpc_destination_variable)
dest = getattr(instance, self.vpc_destination_variable, None)
if dest is None:
dest = getattr(instance, 'tags').get(self.vpc_destination_variable, None)
else:
dest = getattr(instance, self.destination_variable)
dest = getattr(instance, self.destination_variable, None)
if dest is None:
dest = getattr(instance, 'tags').get(self.destination_variable, None)

if not dest:
# Skip instances we cannot address (e.g. private VPC subnet)
Expand Down

0 comments on commit 5eafa1e

Please sign in to comment.