[cloud] Add support for using IP addresses in target groups (#34266)
* Add support for IP based ELB target groups. Fixes #30962 * Add support for using IP addresses in target groups
This commit is contained in:
parent
de60328d94
commit
866239e01a
1 changed files with 57 additions and 20 deletions
|
@ -13,10 +13,11 @@ ANSIBLE_METADATA = {'metadata_version': '1.1',
|
|||
DOCUMENTATION = '''
|
||||
---
|
||||
module: elb_target_group
|
||||
short_description: Manage a target group for an Application load balancer
|
||||
short_description: Manage a target group for an Application or Network load balancer
|
||||
description:
|
||||
- Manage an AWS Application Elastic Load Balancer target group. See
|
||||
U(http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html) for details.
|
||||
- Manage an AWS Elastic Load Balancer target group. See
|
||||
U(http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html) or
|
||||
U(http://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html) for details.
|
||||
version_added: "2.4"
|
||||
requirements: [ boto3 ]
|
||||
author: "Rob White (@wimnat)"
|
||||
|
@ -97,14 +98,25 @@ options:
|
|||
default: lb_cookie
|
||||
successful_response_codes:
|
||||
description:
|
||||
- >
|
||||
The HTTP codes to use when checking for a successful response from a target. You can specify multiple values (for example, "200,202") or a range of
|
||||
- The HTTP codes to use when checking for a successful response from a target. You can specify multiple values (for example, "200,202") or a range of
|
||||
values (for example, "200-299").
|
||||
required: false
|
||||
tags:
|
||||
description:
|
||||
- A dictionary of one or more tags to assign to the target group.
|
||||
required: false
|
||||
target_type:
|
||||
description:
|
||||
- The type of target that you must specify when registering targets with this target group. The possible values are
|
||||
C(instance) (targets are specified by instance ID) or C(ip) (targets are specified by IP address).
|
||||
Note that you can't specify targets for a target group using both instance IDs and IP addresses.
|
||||
If the target type is ip, specify IP addresses from the subnets of the virtual private cloud (VPC) for the target
|
||||
group, the RFC 1918 range (10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16), and the RFC 6598 range (100.64.0.0/10).
|
||||
You can't specify publicly routable IP addresses.
|
||||
required: false
|
||||
default: instance
|
||||
choices: ['instance', 'ip']
|
||||
version_added: 2.5
|
||||
targets:
|
||||
description:
|
||||
- A list of targets to assign to the target group. This parameter defaults to an empty list. Unless you set the 'modify_targets' parameter then
|
||||
|
@ -151,22 +163,42 @@ EXAMPLES = '''
|
|||
name: mytargetgroup
|
||||
state: absent
|
||||
|
||||
# Create a target group with targets
|
||||
# Create a target group with instance targets
|
||||
- elb_target_group:
|
||||
name: mytargetgroup
|
||||
protocol: http
|
||||
port: 81
|
||||
vpc_id: vpc-01234567
|
||||
health_check_path: /
|
||||
successful_response_codes: "200,250-260"
|
||||
targets:
|
||||
- Id: i-01234567
|
||||
Port: 80
|
||||
- Id: i-98765432
|
||||
Port: 80
|
||||
state: present
|
||||
wait_timeout: 200
|
||||
wait: True
|
||||
name: mytargetgroup
|
||||
protocol: http
|
||||
port: 81
|
||||
vpc_id: vpc-01234567
|
||||
health_check_path: /
|
||||
successful_response_codes: "200,250-260"
|
||||
targets:
|
||||
- Id: i-01234567
|
||||
Port: 80
|
||||
- Id: i-98765432
|
||||
Port: 80
|
||||
state: present
|
||||
wait_timeout: 200
|
||||
wait: True
|
||||
|
||||
# Create a target group with IP address targets
|
||||
- elb_target_group:
|
||||
name: mytargetgroup
|
||||
protocol: http
|
||||
port: 81
|
||||
vpc_id: vpc-01234567
|
||||
health_check_path: /
|
||||
successful_response_codes: "200,250-260"
|
||||
target_type: ip
|
||||
targets:
|
||||
- Id: 10.0.0.10
|
||||
Port: 80
|
||||
AvailabilityZone: all
|
||||
- Id: 10.0.0.20
|
||||
Port: 80
|
||||
state: present
|
||||
wait_timeout: 200
|
||||
wait: True
|
||||
|
||||
'''
|
||||
|
||||
RETURN = '''
|
||||
|
@ -380,6 +412,10 @@ def create_or_update_target_group(connection, module):
|
|||
params['Matcher'] = {}
|
||||
params['Matcher']['HttpCode'] = module.params.get("successful_response_codes")
|
||||
|
||||
# Get target type
|
||||
if module.params.get("target_type") is not None:
|
||||
params['TargetType'] = module.params.get("target_type")
|
||||
|
||||
# Get target group
|
||||
tg = get_target_group(connection, module)
|
||||
|
||||
|
@ -645,6 +681,7 @@ def main():
|
|||
state=dict(required=True, choices=['present', 'absent'], type='str'),
|
||||
successful_response_codes=dict(type='str'),
|
||||
tags=dict(default={}, type='dict'),
|
||||
target_type=dict(type='str', default='instance', choices=['instance', 'ip']),
|
||||
targets=dict(type='list'),
|
||||
unhealthy_threshold_count=dict(type='int'),
|
||||
vpc_id=dict(type='str'),
|
||||
|
|
Loading…
Reference in a new issue