diff --git a/cloud/ec2_asg b/cloud/ec2_asg index 971a2a8c728..f0305e717af 100644 --- a/cloud/ec2_asg +++ b/cloud/ec2_asg @@ -39,8 +39,8 @@ options: required: false availability_zones: description: - - List of availability zone names in which to create the group. - required: true + - List of availability zone names in which to create the group. Required if vpc_zone_identifier is not set. + required: false launch_config_name: description: - Name of the Launch configuration to use for the group. See the ec2_lc module for managing these. @@ -102,7 +102,7 @@ def enforce_required_arguments(module): they cannot be mandatory arguments for the module, so we enforce them here ''' missing_args = [] - for arg in ('min_size', 'max_size', 'launch_config_name', 'availability_zones'): + for arg in ('min_size', 'max_size', 'launch_config_name'): if module.params[arg] is None: missing_args.append(arg) if missing_args: @@ -122,9 +122,17 @@ def create_autoscaling_group(connection, module): vpc_zone_identifier = module.params.get('vpc_zone_identifier') launch_configs = connection.get_all_launch_configurations(names=[launch_config_name]) - + as_groups = connection.get_all_groups(names=[group_name]) + if not vpc_zone_identifier and not availability_zones: + region, ec2_url, aws_connect_params = get_aws_connection_info(module) + try: + ec2_connection = connect_to_aws(boto.ec2, region, **aws_connect_params) + except boto.exception.NoAuthHandlerFound, e: + module.fail_json(msg=str(e)) + module.params['availability_zones'] = [zone.name for zone in ec2_connection.get_all_zones()] + if not as_groups: ag = AutoScalingGroup( group_name=group_name,