mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Add support for intra-region VPC peering (#34036)
* [ec2_vpc_peer] Add support for intra-region VPC peering
This commit is contained in:
parent
513c75079e
commit
fcc79de246
1 changed files with 37 additions and 1 deletions
|
@ -27,6 +27,11 @@ options:
|
||||||
description:
|
description:
|
||||||
- Peering connection id.
|
- Peering connection id.
|
||||||
required: false
|
required: false
|
||||||
|
peer_region:
|
||||||
|
description:
|
||||||
|
- Region of the accepting VPC.
|
||||||
|
required: false
|
||||||
|
version_added: '2.5'
|
||||||
peer_vpc_id:
|
peer_vpc_id:
|
||||||
description:
|
description:
|
||||||
- VPC id of the accepting VPC.
|
- VPC id of the accepting VPC.
|
||||||
|
@ -113,6 +118,27 @@ EXAMPLES = '''
|
||||||
state: accept
|
state: accept
|
||||||
register: vpc_peer
|
register: vpc_peer
|
||||||
|
|
||||||
|
# Complete example to create and accept an intra-region peering connection.
|
||||||
|
- name: Create intra-region VPC peering Connection
|
||||||
|
ec2_vpc_peer:
|
||||||
|
region: us-east-1
|
||||||
|
vpc_id: vpc-12345678
|
||||||
|
peer_vpc_id: vpc-87654321
|
||||||
|
peer_vpc_region: us-west-2
|
||||||
|
state: present
|
||||||
|
tags:
|
||||||
|
Name: Peering connection for us-east-1 VPC to us-west-2 VPC
|
||||||
|
CostCode: CC1234
|
||||||
|
Project: phoenix
|
||||||
|
register: vpc_peer
|
||||||
|
|
||||||
|
- name: Accept peering connection from peer region
|
||||||
|
ec2_vpc_peer:
|
||||||
|
region: us-west-2
|
||||||
|
peering_id: "{{ vpc_peer.peering_id }}"
|
||||||
|
state: accept
|
||||||
|
register: vpc_peer
|
||||||
|
|
||||||
# Complete example to create and reject a local peering connection.
|
# Complete example to create and reject a local peering connection.
|
||||||
- name: Create local account VPC peering Connection
|
- name: Create local account VPC peering Connection
|
||||||
ec2_vpc_peer:
|
ec2_vpc_peer:
|
||||||
|
@ -191,6 +217,8 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass # caught by imported HAS_BOTO3
|
pass # caught by imported HAS_BOTO3
|
||||||
|
|
||||||
|
import distutils.version
|
||||||
|
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
from ansible.module_utils.ec2 import boto3_conn, ec2_argument_spec, get_aws_connection_info, HAS_BOTO3
|
from ansible.module_utils.ec2 import boto3_conn, ec2_argument_spec, get_aws_connection_info, HAS_BOTO3
|
||||||
|
|
||||||
|
@ -247,6 +275,10 @@ def create_peer_connection(client, module):
|
||||||
params = dict()
|
params = dict()
|
||||||
params['VpcId'] = module.params.get('vpc_id')
|
params['VpcId'] = module.params.get('vpc_id')
|
||||||
params['PeerVpcId'] = module.params.get('peer_vpc_id')
|
params['PeerVpcId'] = module.params.get('peer_vpc_id')
|
||||||
|
if module.params.get('peer_region'):
|
||||||
|
if distutils.version.StrictVersion(botocore.__version__) < distutils.version.StrictVersion('1.8.6'):
|
||||||
|
module.fail_json(msg="specifying peer_region parameter requires botocore >= 1.8.6")
|
||||||
|
params['PeerRegion'] = module.params.get('peer_region')
|
||||||
if module.params.get('peer_owner_id'):
|
if module.params.get('peer_owner_id'):
|
||||||
params['PeerOwnerId'] = str(module.params.get('peer_owner_id'))
|
params['PeerOwnerId'] = str(module.params.get('peer_owner_id'))
|
||||||
params['DryRun'] = module.check_mode
|
params['DryRun'] = module.check_mode
|
||||||
|
@ -272,10 +304,11 @@ def create_peer_connection(client, module):
|
||||||
|
|
||||||
def remove_peer_connection(client, module):
|
def remove_peer_connection(client, module):
|
||||||
pcx_id = module.params.get('peering_id')
|
pcx_id = module.params.get('peering_id')
|
||||||
params = dict()
|
|
||||||
if not pcx_id:
|
if not pcx_id:
|
||||||
|
params = dict()
|
||||||
params['VpcId'] = module.params.get('vpc_id')
|
params['VpcId'] = module.params.get('vpc_id')
|
||||||
params['PeerVpcId'] = module.params.get('peer_vpc_id')
|
params['PeerVpcId'] = module.params.get('peer_vpc_id')
|
||||||
|
params['PeerRegion'] = module.params.get('peer_region')
|
||||||
if module.params.get('peer_owner_id'):
|
if module.params.get('peer_owner_id'):
|
||||||
params['PeerOwnerId'] = str(module.params.get('peer_owner_id'))
|
params['PeerOwnerId'] = str(module.params.get('peer_owner_id'))
|
||||||
params['DryRun'] = module.check_mode
|
params['DryRun'] = module.check_mode
|
||||||
|
@ -284,7 +317,9 @@ def remove_peer_connection(client, module):
|
||||||
module.exit_json(changed=False)
|
module.exit_json(changed=False)
|
||||||
else:
|
else:
|
||||||
pcx_id = peering_conns['VpcPeeringConnections'][0]['VpcPeeringConnectionId']
|
pcx_id = peering_conns['VpcPeeringConnections'][0]['VpcPeeringConnectionId']
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
params = dict()
|
||||||
params['VpcPeeringConnectionId'] = pcx_id
|
params['VpcPeeringConnectionId'] = pcx_id
|
||||||
client.delete_vpc_peering_connection(**params)
|
client.delete_vpc_peering_connection(**params)
|
||||||
module.exit_json(changed=True)
|
module.exit_json(changed=True)
|
||||||
|
@ -356,6 +391,7 @@ def main():
|
||||||
dict(
|
dict(
|
||||||
vpc_id=dict(),
|
vpc_id=dict(),
|
||||||
peer_vpc_id=dict(),
|
peer_vpc_id=dict(),
|
||||||
|
peer_region=dict(),
|
||||||
peering_id=dict(),
|
peering_id=dict(),
|
||||||
peer_owner_id=dict(),
|
peer_owner_id=dict(),
|
||||||
tags=dict(required=False, type='dict'),
|
tags=dict(required=False, type='dict'),
|
||||||
|
|
Loading…
Reference in a new issue