mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Merge branch 'destination_format' of https://github.com/a13m/ansible into a13m-destination_format
This commit is contained in:
commit
c9da48d5ba
2 changed files with 22 additions and 1 deletions
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue