|
@ -149,75 +149,6 @@ def parse_bool(string_form): |
|
|
raise ValueError('could not convert %r to a bool' % string_form) |
|
|
raise ValueError('could not convert %r to a bool' % string_form) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@parses('triton_machine') |
|
|
|
|
|
@calculate_mantl_vars |
|
|
|
|
|
def triton_machine(resource, module_name): |
|
|
|
|
|
raw_attrs = resource['primary']['attributes'] |
|
|
|
|
|
name = raw_attrs.get('name') |
|
|
|
|
|
groups = [] |
|
|
|
|
|
|
|
|
|
|
|
attrs = { |
|
|
|
|
|
'id': raw_attrs['id'], |
|
|
|
|
|
'dataset': raw_attrs['dataset'], |
|
|
|
|
|
'disk': raw_attrs['disk'], |
|
|
|
|
|
'firewall_enabled': parse_bool(raw_attrs['firewall_enabled']), |
|
|
|
|
|
'image': raw_attrs['image'], |
|
|
|
|
|
'ips': parse_list(raw_attrs, 'ips'), |
|
|
|
|
|
'memory': raw_attrs['memory'], |
|
|
|
|
|
'name': raw_attrs['name'], |
|
|
|
|
|
'networks': parse_list(raw_attrs, 'networks'), |
|
|
|
|
|
'package': raw_attrs['package'], |
|
|
|
|
|
'primary_ip': raw_attrs['primaryip'], |
|
|
|
|
|
'root_authorized_keys': raw_attrs['root_authorized_keys'], |
|
|
|
|
|
'state': raw_attrs['state'], |
|
|
|
|
|
'tags': parse_dict(raw_attrs, 'tags'), |
|
|
|
|
|
'type': raw_attrs['type'], |
|
|
|
|
|
'user_data': raw_attrs['user_data'], |
|
|
|
|
|
'user_script': raw_attrs['user_script'], |
|
|
|
|
|
|
|
|
|
|
|
# ansible |
|
|
|
|
|
'ansible_ssh_host': raw_attrs['primaryip'], |
|
|
|
|
|
'ansible_ssh_port': 22, |
|
|
|
|
|
'ansible_ssh_user': 'root', # it's "root" on Triton by default |
|
|
|
|
|
|
|
|
|
|
|
# generic |
|
|
|
|
|
'public_ipv4': raw_attrs['primaryip'], |
|
|
|
|
|
'provider': 'triton', |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# private IPv4 |
|
|
|
|
|
for ip in attrs['ips']: |
|
|
|
|
|
if ip.startswith('10') or ip.startswith('192.168'): # private IPs |
|
|
|
|
|
attrs['private_ipv4'] = ip |
|
|
|
|
|
break |
|
|
|
|
|
|
|
|
|
|
|
if 'private_ipv4' not in attrs: |
|
|
|
|
|
attrs['private_ipv4'] = attrs['public_ipv4'] |
|
|
|
|
|
|
|
|
|
|
|
# attrs specific to Mantl |
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'consul_dc': _clean_dc(attrs['tags'].get('dc', 'none')), |
|
|
|
|
|
'role': attrs['tags'].get('role', 'none'), |
|
|
|
|
|
'ansible_python_interpreter': attrs['tags'].get('python_bin', 'python') |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
# add groups based on attrs |
|
|
|
|
|
groups.append('triton_image=' + attrs['image']) |
|
|
|
|
|
groups.append('triton_package=' + attrs['package']) |
|
|
|
|
|
groups.append('triton_state=' + attrs['state']) |
|
|
|
|
|
groups.append('triton_firewall_enabled=%s' % attrs['firewall_enabled']) |
|
|
|
|
|
groups.extend('triton_tags_%s=%s' % item |
|
|
|
|
|
for item in attrs['tags'].items()) |
|
|
|
|
|
groups.extend('triton_network=' + network |
|
|
|
|
|
for network in attrs['networks']) |
|
|
|
|
|
|
|
|
|
|
|
# groups specific to Mantl |
|
|
|
|
|
groups.append('role=' + attrs['role']) |
|
|
|
|
|
groups.append('dc=' + attrs['consul_dc']) |
|
|
|
|
|
|
|
|
|
|
|
return name, attrs, groups |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@parses('packet_device') |
|
|
@parses('packet_device') |
|
|
def packet_device(resource, tfvars=None): |
|
|
def packet_device(resource, tfvars=None): |
|
|
raw_attrs = resource['primary']['attributes'] |
|
|
raw_attrs = resource['primary']['attributes'] |
|
@ -259,94 +190,6 @@ def packet_device(resource, tfvars=None): |
|
|
return name, attrs, groups |
|
|
return name, attrs, groups |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@parses('digitalocean_droplet') |
|
|
|
|
|
@calculate_mantl_vars |
|
|
|
|
|
def digitalocean_host(resource, tfvars=None): |
|
|
|
|
|
raw_attrs = resource['primary']['attributes'] |
|
|
|
|
|
name = raw_attrs['name'] |
|
|
|
|
|
groups = [] |
|
|
|
|
|
|
|
|
|
|
|
attrs = { |
|
|
|
|
|
'id': raw_attrs['id'], |
|
|
|
|
|
'image': raw_attrs['image'], |
|
|
|
|
|
'ipv4_address': raw_attrs['ipv4_address'], |
|
|
|
|
|
'locked': parse_bool(raw_attrs['locked']), |
|
|
|
|
|
'metadata': json.loads(raw_attrs.get('user_data', '{}')), |
|
|
|
|
|
'region': raw_attrs['region'], |
|
|
|
|
|
'size': raw_attrs['size'], |
|
|
|
|
|
'ssh_keys': parse_list(raw_attrs, 'ssh_keys'), |
|
|
|
|
|
'status': raw_attrs['status'], |
|
|
|
|
|
# ansible |
|
|
|
|
|
'ansible_ssh_host': raw_attrs['ipv4_address'], |
|
|
|
|
|
'ansible_ssh_port': 22, |
|
|
|
|
|
'ansible_ssh_user': 'root', # it's always "root" on DO |
|
|
|
|
|
# generic |
|
|
|
|
|
'public_ipv4': raw_attrs['ipv4_address'], |
|
|
|
|
|
'private_ipv4': raw_attrs.get('ipv4_address_private', |
|
|
|
|
|
raw_attrs['ipv4_address']), |
|
|
|
|
|
'provider': 'digitalocean', |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# attrs specific to Mantl |
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'consul_dc': _clean_dc(attrs['metadata'].get('dc', attrs['region'])), |
|
|
|
|
|
'role': attrs['metadata'].get('role', 'none'), |
|
|
|
|
|
'ansible_python_interpreter': attrs['metadata'].get('python_bin','python') |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
# add groups based on attrs |
|
|
|
|
|
groups.append('do_image=' + attrs['image']) |
|
|
|
|
|
groups.append('do_locked=%s' % attrs['locked']) |
|
|
|
|
|
groups.append('do_region=' + attrs['region']) |
|
|
|
|
|
groups.append('do_size=' + attrs['size']) |
|
|
|
|
|
groups.append('do_status=' + attrs['status']) |
|
|
|
|
|
groups.extend('do_metadata_%s=%s' % item |
|
|
|
|
|
for item in attrs['metadata'].items()) |
|
|
|
|
|
|
|
|
|
|
|
# groups specific to Mantl |
|
|
|
|
|
groups.append('role=' + attrs['role']) |
|
|
|
|
|
groups.append('dc=' + attrs['consul_dc']) |
|
|
|
|
|
|
|
|
|
|
|
return name, attrs, groups |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@parses('softlayer_virtualserver') |
|
|
|
|
|
@calculate_mantl_vars |
|
|
|
|
|
def softlayer_host(resource, module_name): |
|
|
|
|
|
raw_attrs = resource['primary']['attributes'] |
|
|
|
|
|
name = raw_attrs['name'] |
|
|
|
|
|
groups = [] |
|
|
|
|
|
|
|
|
|
|
|
attrs = { |
|
|
|
|
|
'id': raw_attrs['id'], |
|
|
|
|
|
'image': raw_attrs['image'], |
|
|
|
|
|
'ipv4_address': raw_attrs['ipv4_address'], |
|
|
|
|
|
'metadata': json.loads(raw_attrs.get('user_data', '{}')), |
|
|
|
|
|
'region': raw_attrs['region'], |
|
|
|
|
|
'ram': raw_attrs['ram'], |
|
|
|
|
|
'cpu': raw_attrs['cpu'], |
|
|
|
|
|
'ssh_keys': parse_list(raw_attrs, 'ssh_keys'), |
|
|
|
|
|
'public_ipv4': raw_attrs['ipv4_address'], |
|
|
|
|
|
'private_ipv4': raw_attrs['ipv4_address_private'], |
|
|
|
|
|
'ansible_ssh_host': raw_attrs['ipv4_address'], |
|
|
|
|
|
'ansible_ssh_port': 22, |
|
|
|
|
|
'ansible_ssh_user': 'root', |
|
|
|
|
|
'provider': 'softlayer', |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# attrs specific to Mantl |
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'consul_dc': _clean_dc(attrs['metadata'].get('dc', attrs['region'])), |
|
|
|
|
|
'role': attrs['metadata'].get('role', 'none'), |
|
|
|
|
|
'ansible_python_interpreter': attrs['metadata'].get('python_bin','python') |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
# groups specific to Mantl |
|
|
|
|
|
groups.append('role=' + attrs['role']) |
|
|
|
|
|
groups.append('dc=' + attrs['consul_dc']) |
|
|
|
|
|
|
|
|
|
|
|
return name, attrs, groups |
|
|
|
|
|
|
|
|
|
|
|
def openstack_floating_ips(resource): |
|
|
def openstack_floating_ips(resource): |
|
|
raw_attrs = resource['primary']['attributes'] |
|
|
raw_attrs = resource['primary']['attributes'] |
|
|
attrs = { |
|
|
attrs = { |
|
@ -444,281 +287,6 @@ def openstack_host(resource, module_name): |
|
|
return name, attrs, groups |
|
|
return name, attrs, groups |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@parses('aws_instance') |
|
|
|
|
|
@calculate_mantl_vars |
|
|
|
|
|
def aws_host(resource, module_name): |
|
|
|
|
|
name = resource['primary']['attributes']['tags.Name'] |
|
|
|
|
|
raw_attrs = resource['primary']['attributes'] |
|
|
|
|
|
|
|
|
|
|
|
groups = [] |
|
|
|
|
|
|
|
|
|
|
|
attrs = { |
|
|
|
|
|
'ami': raw_attrs['ami'], |
|
|
|
|
|
'availability_zone': raw_attrs['availability_zone'], |
|
|
|
|
|
'ebs_block_device': parse_attr_list(raw_attrs, 'ebs_block_device'), |
|
|
|
|
|
'ebs_optimized': parse_bool(raw_attrs['ebs_optimized']), |
|
|
|
|
|
'ephemeral_block_device': parse_attr_list(raw_attrs, |
|
|
|
|
|
'ephemeral_block_device'), |
|
|
|
|
|
'id': raw_attrs['id'], |
|
|
|
|
|
'key_name': raw_attrs['key_name'], |
|
|
|
|
|
'private': parse_dict(raw_attrs, 'private', |
|
|
|
|
|
sep='_'), |
|
|
|
|
|
'public': parse_dict(raw_attrs, 'public', |
|
|
|
|
|
sep='_'), |
|
|
|
|
|
'root_block_device': parse_attr_list(raw_attrs, 'root_block_device'), |
|
|
|
|
|
'security_groups': parse_list(raw_attrs, 'security_groups'), |
|
|
|
|
|
'subnet': parse_dict(raw_attrs, 'subnet', |
|
|
|
|
|
sep='_'), |
|
|
|
|
|
'tags': parse_dict(raw_attrs, 'tags'), |
|
|
|
|
|
'tenancy': raw_attrs['tenancy'], |
|
|
|
|
|
'vpc_security_group_ids': parse_list(raw_attrs, |
|
|
|
|
|
'vpc_security_group_ids'), |
|
|
|
|
|
# ansible-specific |
|
|
|
|
|
'ansible_ssh_port': 22, |
|
|
|
|
|
'ansible_ssh_host': raw_attrs['public_ip'], |
|
|
|
|
|
# generic |
|
|
|
|
|
'public_ipv4': raw_attrs['public_ip'], |
|
|
|
|
|
'private_ipv4': raw_attrs['private_ip'], |
|
|
|
|
|
'provider': 'aws', |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# attrs specific to Ansible |
|
|
|
|
|
if 'tags.sshUser' in raw_attrs: |
|
|
|
|
|
attrs['ansible_ssh_user'] = raw_attrs['tags.sshUser'] |
|
|
|
|
|
if 'tags.sshPrivateIp' in raw_attrs: |
|
|
|
|
|
attrs['ansible_ssh_host'] = raw_attrs['private_ip'] |
|
|
|
|
|
|
|
|
|
|
|
# attrs specific to Mantl |
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'consul_dc': _clean_dc(attrs['tags'].get('dc', module_name)), |
|
|
|
|
|
'role': attrs['tags'].get('role', 'none'), |
|
|
|
|
|
'ansible_python_interpreter': attrs['tags'].get('python_bin','python') |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
# groups specific to Mantl |
|
|
|
|
|
groups.extend(['aws_ami=' + attrs['ami'], |
|
|
|
|
|
'aws_az=' + attrs['availability_zone'], |
|
|
|
|
|
'aws_key_name=' + attrs['key_name'], |
|
|
|
|
|
'aws_tenancy=' + attrs['tenancy']]) |
|
|
|
|
|
groups.extend('aws_tag_%s=%s' % item for item in attrs['tags'].items()) |
|
|
|
|
|
groups.extend('aws_vpc_security_group=' + group |
|
|
|
|
|
for group in attrs['vpc_security_group_ids']) |
|
|
|
|
|
groups.extend('aws_subnet_%s=%s' % subnet |
|
|
|
|
|
for subnet in attrs['subnet'].items()) |
|
|
|
|
|
|
|
|
|
|
|
# groups specific to Mantl |
|
|
|
|
|
groups.append('role=' + attrs['role']) |
|
|
|
|
|
groups.append('dc=' + attrs['consul_dc']) |
|
|
|
|
|
|
|
|
|
|
|
return name, attrs, groups |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@parses('google_compute_instance') |
|
|
|
|
|
@calculate_mantl_vars |
|
|
|
|
|
def gce_host(resource, module_name): |
|
|
|
|
|
name = resource['primary']['id'] |
|
|
|
|
|
raw_attrs = resource['primary']['attributes'] |
|
|
|
|
|
groups = [] |
|
|
|
|
|
|
|
|
|
|
|
# network interfaces |
|
|
|
|
|
interfaces = parse_attr_list(raw_attrs, 'network_interface') |
|
|
|
|
|
for interface in interfaces: |
|
|
|
|
|
interface['access_config'] = parse_attr_list(interface, |
|
|
|
|
|
'access_config') |
|
|
|
|
|
for key in interface.keys(): |
|
|
|
|
|
if '.' in key: |
|
|
|
|
|
del interface[key] |
|
|
|
|
|
|
|
|
|
|
|
# general attrs |
|
|
|
|
|
attrs = { |
|
|
|
|
|
'can_ip_forward': raw_attrs['can_ip_forward'] == 'true', |
|
|
|
|
|
'disks': parse_attr_list(raw_attrs, 'disk'), |
|
|
|
|
|
'machine_type': raw_attrs['machine_type'], |
|
|
|
|
|
'metadata': parse_dict(raw_attrs, 'metadata'), |
|
|
|
|
|
'network': parse_attr_list(raw_attrs, 'network'), |
|
|
|
|
|
'network_interface': interfaces, |
|
|
|
|
|
'self_link': raw_attrs['self_link'], |
|
|
|
|
|
'service_account': parse_attr_list(raw_attrs, 'service_account'), |
|
|
|
|
|
'tags': parse_list(raw_attrs, 'tags'), |
|
|
|
|
|
'zone': raw_attrs['zone'], |
|
|
|
|
|
# ansible |
|
|
|
|
|
'ansible_ssh_port': 22, |
|
|
|
|
|
'provider': 'gce', |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# attrs specific to Ansible |
|
|
|
|
|
if 'metadata.ssh_user' in raw_attrs: |
|
|
|
|
|
attrs['ansible_ssh_user'] = raw_attrs['metadata.ssh_user'] |
|
|
|
|
|
|
|
|
|
|
|
# attrs specific to Mantl |
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'consul_dc': _clean_dc(attrs['metadata'].get('dc', module_name)), |
|
|
|
|
|
'role': attrs['metadata'].get('role', 'none'), |
|
|
|
|
|
'ansible_python_interpreter': attrs['metadata'].get('python_bin','python') |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'ansible_ssh_host': interfaces[0]['access_config'][0]['nat_ip'] or interfaces[0]['access_config'][0]['assigned_nat_ip'], |
|
|
|
|
|
'public_ipv4': interfaces[0]['access_config'][0]['nat_ip'] or interfaces[0]['access_config'][0]['assigned_nat_ip'], |
|
|
|
|
|
'private_ipv4': interfaces[0]['address'], |
|
|
|
|
|
'publicly_routable': True, |
|
|
|
|
|
}) |
|
|
|
|
|
except (KeyError, ValueError): |
|
|
|
|
|
attrs.update({'ansible_ssh_host': '', 'publicly_routable': False}) |
|
|
|
|
|
|
|
|
|
|
|
# add groups based on attrs |
|
|
|
|
|
groups.extend('gce_image=' + disk['image'] for disk in attrs['disks']) |
|
|
|
|
|
groups.append('gce_machine_type=' + attrs['machine_type']) |
|
|
|
|
|
groups.extend('gce_metadata_%s=%s' % (key, value) |
|
|
|
|
|
for (key, value) in attrs['metadata'].items() |
|
|
|
|
|
if key not in set(['sshKeys'])) |
|
|
|
|
|
groups.extend('gce_tag=' + tag for tag in attrs['tags']) |
|
|
|
|
|
groups.append('gce_zone=' + attrs['zone']) |
|
|
|
|
|
|
|
|
|
|
|
if attrs['can_ip_forward']: |
|
|
|
|
|
groups.append('gce_ip_forward') |
|
|
|
|
|
if attrs['publicly_routable']: |
|
|
|
|
|
groups.append('gce_publicly_routable') |
|
|
|
|
|
|
|
|
|
|
|
# groups specific to Mantl |
|
|
|
|
|
groups.append('role=' + attrs['metadata'].get('role', 'none')) |
|
|
|
|
|
groups.append('dc=' + attrs['consul_dc']) |
|
|
|
|
|
|
|
|
|
|
|
return name, attrs, groups |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@parses('vsphere_virtual_machine') |
|
|
|
|
|
@calculate_mantl_vars |
|
|
|
|
|
def vsphere_host(resource, module_name): |
|
|
|
|
|
raw_attrs = resource['primary']['attributes'] |
|
|
|
|
|
network_attrs = parse_dict(raw_attrs, 'network_interface') |
|
|
|
|
|
network = parse_dict(network_attrs, '0') |
|
|
|
|
|
ip_address = network.get('ipv4_address', network['ip_address']) |
|
|
|
|
|
name = raw_attrs['name'] |
|
|
|
|
|
groups = [] |
|
|
|
|
|
|
|
|
|
|
|
attrs = { |
|
|
|
|
|
'id': raw_attrs['id'], |
|
|
|
|
|
'ip_address': ip_address, |
|
|
|
|
|
'private_ipv4': ip_address, |
|
|
|
|
|
'public_ipv4': ip_address, |
|
|
|
|
|
'metadata': parse_dict(raw_attrs, 'custom_configuration_parameters'), |
|
|
|
|
|
'ansible_ssh_port': 22, |
|
|
|
|
|
'provider': 'vsphere', |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'ansible_ssh_host': ip_address, |
|
|
|
|
|
}) |
|
|
|
|
|
except (KeyError, ValueError): |
|
|
|
|
|
attrs.update({'ansible_ssh_host': '', }) |
|
|
|
|
|
|
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'consul_dc': _clean_dc(attrs['metadata'].get('consul_dc', module_name)), |
|
|
|
|
|
'role': attrs['metadata'].get('role', 'none'), |
|
|
|
|
|
'ansible_python_interpreter': attrs['metadata'].get('python_bin','python') |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
# attrs specific to Ansible |
|
|
|
|
|
if 'ssh_user' in attrs['metadata']: |
|
|
|
|
|
attrs['ansible_ssh_user'] = attrs['metadata']['ssh_user'] |
|
|
|
|
|
|
|
|
|
|
|
groups.append('role=' + attrs['role']) |
|
|
|
|
|
groups.append('dc=' + attrs['consul_dc']) |
|
|
|
|
|
|
|
|
|
|
|
return name, attrs, groups |
|
|
|
|
|
|
|
|
|
|
|
@parses('azure_instance') |
|
|
|
|
|
@calculate_mantl_vars |
|
|
|
|
|
def azure_host(resource, module_name): |
|
|
|
|
|
name = resource['primary']['attributes']['name'] |
|
|
|
|
|
raw_attrs = resource['primary']['attributes'] |
|
|
|
|
|
|
|
|
|
|
|
groups = [] |
|
|
|
|
|
|
|
|
|
|
|
attrs = { |
|
|
|
|
|
'automatic_updates': raw_attrs['automatic_updates'], |
|
|
|
|
|
'description': raw_attrs['description'], |
|
|
|
|
|
'hosted_service_name': raw_attrs['hosted_service_name'], |
|
|
|
|
|
'id': raw_attrs['id'], |
|
|
|
|
|
'image': raw_attrs['image'], |
|
|
|
|
|
'ip_address': raw_attrs['ip_address'], |
|
|
|
|
|
'location': raw_attrs['location'], |
|
|
|
|
|
'name': raw_attrs['name'], |
|
|
|
|
|
'reverse_dns': raw_attrs['reverse_dns'], |
|
|
|
|
|
'security_group': raw_attrs['security_group'], |
|
|
|
|
|
'size': raw_attrs['size'], |
|
|
|
|
|
'ssh_key_thumbprint': raw_attrs['ssh_key_thumbprint'], |
|
|
|
|
|
'subnet': raw_attrs['subnet'], |
|
|
|
|
|
'username': raw_attrs['username'], |
|
|
|
|
|
'vip_address': raw_attrs['vip_address'], |
|
|
|
|
|
'virtual_network': raw_attrs['virtual_network'], |
|
|
|
|
|
'endpoint': parse_attr_list(raw_attrs, 'endpoint'), |
|
|
|
|
|
# ansible |
|
|
|
|
|
'ansible_ssh_port': 22, |
|
|
|
|
|
'ansible_ssh_user': raw_attrs['username'], |
|
|
|
|
|
'ansible_ssh_host': raw_attrs['vip_address'], |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# attrs specific to mantl |
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'consul_dc': attrs['location'].lower().replace(" ", "-"), |
|
|
|
|
|
'role': attrs['description'] |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
# groups specific to mantl |
|
|
|
|
|
groups.extend(['azure_image=' + attrs['image'], |
|
|
|
|
|
'azure_location=' + attrs['location'].lower().replace(" ", "-"), |
|
|
|
|
|
'azure_username=' + attrs['username'], |
|
|
|
|
|
'azure_security_group=' + attrs['security_group']]) |
|
|
|
|
|
|
|
|
|
|
|
# groups specific to mantl |
|
|
|
|
|
groups.append('role=' + attrs['role']) |
|
|
|
|
|
groups.append('dc=' + attrs['consul_dc']) |
|
|
|
|
|
|
|
|
|
|
|
return name, attrs, groups |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@parses('clc_server') |
|
|
|
|
|
@calculate_mantl_vars |
|
|
|
|
|
def clc_server(resource, module_name): |
|
|
|
|
|
raw_attrs = resource['primary']['attributes'] |
|
|
|
|
|
name = raw_attrs.get('id') |
|
|
|
|
|
groups = [] |
|
|
|
|
|
md = parse_dict(raw_attrs, 'metadata') |
|
|
|
|
|
attrs = { |
|
|
|
|
|
'metadata': md, |
|
|
|
|
|
'ansible_ssh_port': md.get('ssh_port', 22), |
|
|
|
|
|
'ansible_ssh_user': md.get('ssh_user', 'root'), |
|
|
|
|
|
'provider': 'clc', |
|
|
|
|
|
'publicly_routable': False, |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'public_ipv4': raw_attrs['public_ip_address'], |
|
|
|
|
|
'private_ipv4': raw_attrs['private_ip_address'], |
|
|
|
|
|
'ansible_ssh_host': raw_attrs['public_ip_address'], |
|
|
|
|
|
'publicly_routable': True, |
|
|
|
|
|
}) |
|
|
|
|
|
except (KeyError, ValueError): |
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'ansible_ssh_host': raw_attrs['private_ip_address'], |
|
|
|
|
|
'private_ipv4': raw_attrs['private_ip_address'], |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
attrs.update({ |
|
|
|
|
|
'consul_dc': _clean_dc(attrs['metadata'].get('dc', module_name)), |
|
|
|
|
|
'role': attrs['metadata'].get('role', 'none'), |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
groups.append('role=' + attrs['role']) |
|
|
|
|
|
groups.append('dc=' + attrs['consul_dc']) |
|
|
|
|
|
return name, attrs, groups |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def iter_host_ips(hosts, ips): |
|
|
def iter_host_ips(hosts, ips): |
|
|
'''Update hosts that have an entry in the floating IP list''' |
|
|
'''Update hosts that have an entry in the floating IP list''' |
|
|
for host in hosts: |
|
|
for host in hosts: |
|
|