Merge branch 'a13m-destination_format' into devel

This commit is contained in:
James Cammarata 2016-03-19 09:13:22 -04:00
commit d9f398ec91
2 changed files with 22 additions and 1 deletions

View file

@ -45,6 +45,16 @@ destination_variable = public_dns_name
# vpc_destination_variable = private_ip_address # vpc_destination_variable = private_ip_address
vpc_destination_variable = ip_address vpc_destination_variable = ip_address
# The following two settings allow flexible ansible host naming based on a
# python format string and a comma-separated list of ec2 tags. Note that:
#
# 1) If the tags referenced are not present for some instances, empty strings
# will be substituted in the format string.
# 2) This overrides both destination_variable and vpc_destination_variable.
#
#destination_format = {0}.{1}.example.com
#destination_format_tags = Name,environment
# To tag instances on EC2 with the resource records that point to them from # To tag instances on EC2 with the resource records that point to them from
# Route53, uncomment and set 'route53' to True. # Route53, uncomment and set 'route53' to True.
route53 = False route53 = False

View file

@ -236,11 +236,20 @@ class Ec2Inventory(object):
# Destination addresses # Destination addresses
self.destination_variable = config.get('ec2', 'destination_variable') self.destination_variable = config.get('ec2', 'destination_variable')
self.vpc_destination_variable = config.get('ec2', 'vpc_destination_variable') self.vpc_destination_variable = config.get('ec2', 'vpc_destination_variable')
if config.has_option('ec2', 'hostname_variable'): if config.has_option('ec2', 'hostname_variable'):
self.hostname_variable = config.get('ec2', 'hostname_variable') self.hostname_variable = config.get('ec2', 'hostname_variable')
else: else:
self.hostname_variable = None self.hostname_variable = None
if config.has_option('ec2', 'destination_format') and \
config.has_option('ec2', 'destination_format_tags'):
self.destination_format = config.get('ec2', 'destination_format')
self.destination_format_tags = config.get('ec2', 'destination_format_tags').split(',')
else:
self.destination_format = None
self.destination_format_tags = None
# Route53 # Route53
self.route53_enabled = config.getboolean('ec2', 'route53') self.route53_enabled = config.getboolean('ec2', 'route53')
self.route53_excluded_zones = [] self.route53_excluded_zones = []
@ -627,7 +636,9 @@ class Ec2Inventory(object):
return return
# Select the best destination address # Select the best destination address
if instance.subnet_id: if self.destination_format and self.destination_format_tags:
dest = self.destination_format.format(*[ getattr(instance, 'tags').get(tag, '') for tag in self.destination_format_tags ])
elif instance.subnet_id:
dest = getattr(instance, self.vpc_destination_variable, None) dest = getattr(instance, self.vpc_destination_variable, None)
if dest is None: if dest is None:
dest = getattr(instance, 'tags').get(self.vpc_destination_variable, None) dest = getattr(instance, 'tags').get(self.vpc_destination_variable, None)