Server IP : 85.214.239.14 / Your IP : 3.147.6.122 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /usr/lib/python3/dist-packages/ansible_collections/amazon/aws/plugins/modules/ |
Upload File : |
#!/usr/bin/python # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) from __future__ import (absolute_import, division, print_function) __metaclass__ = type DOCUMENTATION = ''' module: aws_az_info short_description: Gather information about availability zones in AWS version_added: 1.0.0 description: - Gather information about availability zones in AWS. author: 'Henrique Rodrigues (@Sodki)' options: filters: description: - A dict of filters to apply. - Each dict item consists of a filter key and a filter value. - See U(https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) for possible filters. - Filter names and values are case sensitive. - You can use underscores instead of dashes (-) in the filter keys. - Filter keys with underscores will take precedence in case of conflict. required: false default: {} type: dict extends_documentation_fragment: - amazon.aws.aws - amazon.aws.ec2 - amazon.aws.boto3 ''' EXAMPLES = ''' # Note: These examples do not set authentication details, see the AWS Guide for details. - name: Gather information about all availability zones amazon.aws.aws_az_info: - name: Gather information about a single availability zone amazon.aws.aws_az_info: filters: zone-name: eu-west-1a ''' RETURN = ''' availability_zones: returned: on success description: > Availability zones that match the provided filters. Each element consists of a dict with all the information related to that available zone. type: list elements: dict contains: state: description: - The state of the availability zone. - The value is always C(available). type: str returned: on success sample: 'available' opt_in_status: description: - The opt-in status. - The value is always C(opt-in-not-required) for availability zones. type: str returned: on success sample: 'opt-in-not-required' messages: description: List of messages about the availability zone. type: list elements: dict contains: message: description: The message about the availability zone. type: str returned: on success sample: 'msg' returned: on success sample: [ { 'message': 'message_one' }, { 'message': 'message_two' } ] region_name: description: The name of the region. type: str returned: on success sample: 'us-east-1' zone_name: description: The name of the availability zone. type: str returned: on success sample: 'us-east-1e' zone_id: description: The ID of the availability zone. type: str returned: on success sample: 'use1-az5' group_name: description: - The name of the associated group. - For availability zones, this will be the same as I(region_name). type: str returned: on success sample: 'us-east-1' network_border_group: description: The name of the network border group. type: str returned: on success sample: 'us-east-1' zone_type: description: The type of zone. type: str returned: on success sample: 'availability-zone' sample: [ { "group_name": "us-east-1", "messages": [], "network_border_group": "us-east-1", "opt_in_status": "opt-in-not-required", "region_name": "us-east-1", "state": "available", "zone_id": "use1-az6", "zone_name": "us-east-1a", "zone_type": "availability-zone" }, { "group_name": "us-east-1", "messages": [], "network_border_group": "us-east-1", "opt_in_status": "opt-in-not-required", "region_name": "us-east-1", "state": "available", "zone_id": "use1-az1", "zone_name": "us-east-1b", "zone_type": "availability-zone" } ] ''' try: from botocore.exceptions import ClientError, BotoCoreError except ImportError: pass # Handled by AnsibleAWSModule from ansible.module_utils.common.dict_transformations import camel_dict_to_snake_dict from ansible_collections.amazon.aws.plugins.module_utils.core import AnsibleAWSModule from ansible_collections.amazon.aws.plugins.module_utils.ec2 import AWSRetry from ansible_collections.amazon.aws.plugins.module_utils.ec2 import ansible_dict_to_boto3_filter_list def main(): argument_spec = dict( filters=dict(default={}, type='dict') ) module = AnsibleAWSModule(argument_spec=argument_spec, supports_check_mode=True) connection = module.client('ec2', retry_decorator=AWSRetry.jittered_backoff()) # Replace filter key underscores with dashes, for compatibility sanitized_filters = dict(module.params.get('filters')) for k in module.params.get('filters').keys(): if "_" in k: sanitized_filters[k.replace('_', '-')] = sanitized_filters[k] del sanitized_filters[k] try: availability_zones = connection.describe_availability_zones(aws_retry=True, Filters=ansible_dict_to_boto3_filter_list(sanitized_filters)) except (BotoCoreError, ClientError) as e: module.fail_json_aws(e, msg="Unable to describe availability zones.") # Turn the boto3 result into ansible_friendly_snaked_names snaked_availability_zones = [camel_dict_to_snake_dict(az) for az in availability_zones['AvailabilityZones']] module.exit_json(availability_zones=snaked_availability_zones) if __name__ == '__main__': main()