community.aws.ec2_asg – Создание или удаление групп автоматического масштабирования AWS (ASGs)
Примечание
Этот плагин входит в коллекцию community.aws (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install community.aws.
Для использования в playbook укажите: community.aws.ec2_asg.
Новое в версии 1.0.0: из community.aws
Краткое описание
- Может создавать или удалять группы автоматического масштабирования AWS.
- Может использоваться с модулем community.aws.ec2_lc для управления конфигурациями запуска.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- boto
- boto3
- botocore
- python >= 2.6
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| availability_zones список / элементы=строка | Список имён доступных зон, в которых создать группу. По умолчанию используются все доступные зоны в регионе, если vpc_zone_identifier не задан. | ||
| aws_access_key строка | Ключ доступа AWS. Если не задан, используется значение переменной окружения AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY или EC2_ACCESS_KEY. Если задан параметр profile, этот параметр игнорируется. Передача параметров aws_access_key и profile одновременно устарела и будет сделана взаимоисключающей после 2022-06-01. псевдонимы: ec2_access_key, access_key | ||
| aws_ca_bundle путь | Расположение пакета CA для проверки SSL-сертификатов. Используется только для модулей на основе boto3. Примечание: Пакет CA читается со стороны «модуля» и может потребоваться явное копирование из контроллера, если он не запускается локально. | ||
| aws_config словарь | Словарь для изменения конфигурации botocore. Параметры можно найти по адресу https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config. Для модулей boto используется только ключ 'user_agent'. См. http://boto.cloudhackers.com/en/latest/boto_config_tut.html#boto для получения дополнительной информации о конфигурации boto. | ||
| aws_secret_key строка | Секретный ключ AWS. Если не задан, используется значение переменной окружения AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY или EC2_SECRET_KEY. Если задан параметр profile, этот параметр игнорируется. Передача параметров aws_secret_key и profile одновременно устарела и будет сделана взаимоисключающей после 2022-06-01. псевдонимы: ec2_secret_key, secret_key | ||
| debug_botocore_endpoint_logs логический |
| Используйте логирования botocore.endpoint для анализа уникальных (а не общих) API-вызовов «ресурс:действие», выполненных во время задачи, выведя множество в ключ resource_actions в результатах задачи. Используйте обратный вызов aws_resource_action, чтобы вывести общий список, созданный во время выполнения playbook. Также можно использовать переменную окружения ANSIBLE_DEBUG_BOTOCORE_LOGS. | |
| default_cooldown целое число | Значение по умолчанию: 300 | Количество секунд после завершения масштабирования, перед началом следующей активности. | |
| desired_capacity целое число | Желаемое количество экземпляров в группе. Если не указано, используется текущее значение группы. | ||
| ec2_url строка | URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль использует конечные точки EC2). Игнорируется в модулях, где регион обязателен. Должен быть указан во всех остальных модулях, если регион не используется. Если не задано, используется значение переменной окружения EC2_URL, если она есть. псевдонимы: aws_endpoint_url, endpoint_url | ||
| health_check_period целое число | Значение по умолчанию: 300 | Длительность в секундах после ввода в эксплуатацию нового экземпляра EC2, в течение которой Auto Scaling начинает проверять его работоспособность. | |
| health_check_type строка |
| Сервис, для получения статуса работоспособности: Amazon EC2 или Elastic Load Balancer. | |
| launch_config_name строка | Имя конфигурации запуска для группы. См. модуль community.aws.ec2_lc для управления ими. Если не указано, используется текущее значение группы. Один из параметров launch_config_name или launch_template должен быть предоставлен. | ||
| launch_template словарь | Словарь, описывающий шаблон запуска. | ||
| launch_template_id строка | Идентификатор шаблона запуска. Требуется только один из параметров launch_template_name или launch_template_id. | ||
| launch_template_name строка | Имя шаблона запуска. Требуется только один из параметров launch_template_name или launch_template_id. | ||
| version строка | Номер версии шаблона запуска. По умолчанию используется последняя версия, если не указано. | ||
| lc_check логический |
| Проверка, чтобы убедиться, что экземпляры, которые заменяются с помощью replace_instances, ещё не имеют текущей launch_config. | |
| load_balancers список / элементы=строка | Список имён ELB для использования в группе. Используется для классических балансировщиков нагрузки. | ||
| lt_check логический |
| Проверка, чтобы убедиться, что экземпляры, которые заменяются с помощью replace_instances, ещё не имеют текущего launch_template или версии launch_template. | |
| max_instance_lifetime целое число | Максимальное время в секундах, в течение которого экземпляр может находиться в рабочем состоянии. Максимальное время жизни экземпляра должно быть равно 0, между 604800 и 31536000 секундами (включительно) или не задано. Значение 0 удаляет ограничение времени жизни. | ||
| max_size целое число | Максимальное количество экземпляров в группе. Если не указано, используется текущее значение группы. | ||
| metrics_collection логический |
| Включить сбор метрик ASG. | |
| metrics_granularity строка | Значение по умолчанию: "1Minute" | При metrics_collection=true это определяет точность метрик, собираемых CloudWatch. | |
| metrics_list список / элементы=строка | Значение по умолчанию: ["GroupMinSize", "GroupMaxSize", "GroupDesiredCapacity", "GroupInServiceInstances", "GroupPendingInstances", "GroupStandbyInstances", "GroupTerminatingInstances", "GroupTotalInstances"] | Список метрик autoscaling для сбора при metrics_collection=true. | |
| min_size целое число | Минимальное количество экземпляров в группе. Если не указано, используется текущее значение группы. | ||
| mixed_instances_policy словарь | Политика смешанных экземпляров для ASG. Используется только при настройке ASG с использованием шаблона запуска (launch_template). | ||
| instance_types список / элементы=строка | Список типов экземпляров. | ||
| name строка / обязательно | Уникальное имя для создаваемой или удаляемой группы. | ||
| notification_topic строка | ARN темы SNS для отправки уведомлений о масштабировании. | ||
| notification_types список / элементы=строка | Значение по умолчанию: ["autoscaling:EC2_INSTANCE_LAUNCH", "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", "autoscaling:EC2_INSTANCE_TERMINATE", "autoscaling:EC2_INSTANCE_TERMINATE_ERROR"] | Список событий масштабирования, которые должны запускать уведомления. | |
| placement_group строка | Физическое расположение группы размещения кластера, созданной в Amazon EC2. | ||
| profile строка | Использует профиль boto. Работает только с boto >= 2.24.0. Использование profile переопределяет aws_access_key, aws_secret_key и security_token. Поддержка их одновременного использования с profile устарела. aws_access_key, aws_secret_key и security_token будут сделаны взаимоисключающими с profile после 2022-06-01. псевдонимы: aws_profile | ||
| region строка | Регион AWS для использования. Если не указан, используется значение переменной окружения AWS_REGION или EC2_REGION, если она есть. См. http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region
псевдонимы: aws_region, ec2_region | ||
| replace_all_instances boolean |
| В пошаговом режиме заменяет все экземпляры, использующие старую конфигурацию запуска, на экземпляры из новой конфигурации запуска. Увеличивает размер группы ASG на replace_batch_size, ожидает, пока новые экземпляры будут запущены и готовы к работе. После этого завершает пакет старых экземпляров, ожидает замены и повторяет процесс, пока все старые экземпляры не будут заменены. После этого размер группы ASG уменьшается до ожидаемого значения. | |
| replace_batch_size целое число | По умолчанию: 1 | Количество экземпляров, которые необходимо заменить за один раз. Используется с параметром replace_all_instances. | |
| replace_instances список / элементы=строка | Список instance_ids, принадлежащих указанной группе Auto Scaling, которые нужно завершить и заменить экземплярами, соответствующими текущей конфигурации запуска. | ||
| security_token строка | Безопасный токен AWS STS. Если не указан, используется значение переменной окружения AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN. Если задан параметр profile, этот параметр игнорируется. Одновременное использование параметров security_token и profile устарело и после 2022-06-01 эти параметры станут взаимоисключающими. псевдонимы: aws_security_token, access_token | ||
| state строка |
| Зарегистрировать или дезактивировать экземпляр. | |
| suspend_processes список / элементы=строка | По умолчанию: [] | Список процессов масштабирования, которые необходимо приостановить. Допустимые значения включают: Launch, Terminate, HealthCheck, ReplaceUnhealthy, AZRebalance, AlarmNotification, ScheduledActions, AddToLoadBalancer
Полное описание допустимых значений можно найти в документации AWS: | |
| tags список / элементы=словарь | Список тегов для добавления в группу Auto Scaling. Допустимый ключ — propagate_at_launch, который по умолчанию равен true. Если propagate_at_launch равен true, теги будут распространяться на создаваемые экземпляры. | ||
| target_group_arns список / элементы=строка | Список ARNs целевых групп для использования в группе. Используется для балансировщиков нагрузки приложений. | ||
| termination_policies список / элементы=строка | По умолчанию: "Default" | Упорядоченный список критериев, используемых для выбора экземпляров, которые необходимо удалить из группы Auto Scaling при уменьшении емкости. Использование termination_policies=Default при изменении существующей группы Auto Scaling приведет к сохранению существующей политики, а не к её изменению на Default. Допустимые значения включают: Default, OldestInstance, NewestInstance, OldestLaunchConfiguration, ClosestToNextInstanceHour
Полное описание допустимых значений можно найти в документации AWS: | |
| validate_certs boolean |
| Если установлено значение "нет", сертификаты SSL не будут проверены для версий boto >= 2.6.0. | |
| vpc_zone_identifier список / элементы=строка | Список идентификаторов подсетей VPC для использования | ||
| wait_for_instances boolean |
| Ожидать, пока экземпляры ASG перейдут в состояние готовности перед выходом. Если экземпляры находятся за ELB, ожидание будет продолжаться до тех пор, пока ELB не определит, что все экземпляры имеют состояние lifecycle_state "InService" и состояние health_status "Healthy". | |
| wait_timeout целое число | По умолчанию: 300 | Время ожидания, пока экземпляры станут работоспособными при замене. Если возникает ошибка "Ожидание слишком долго для экземпляров ELB, чтобы стать здоровыми", попробуйте увеличить это значение. | |
Примечания
Примечание
- Если параметры не заданы в модуле, можно использовать следующие переменные окружения в порядке убывания приоритета
AWS_URLилиEC2_URL,AWS_PROFILEилиAWS_DEFAULT_PROFILE,AWS_ACCESS_KEY_IDилиAWS_ACCESS_KEYилиEC2_ACCESS_KEY,AWS_SECRET_ACCESS_KEYилиAWS_SECRET_KEYилиEC2_SECRET_KEY,AWS_SECURITY_TOKENилиEC2_SECURITY_TOKEN,AWS_REGIONилиEC2_REGION,AWS_CA_BUNDLE - Ansible использует конфигурационный файл boto (обычно ~/.boto), если учетные данные не предоставлены. См. https://boto.readthedocs.io/en/latest/boto_config_tut.html
-
AWS_REGIONилиEC2_REGIONобычно используются для указания региона AWS, когда это необходимо, но это также можно настроить в конфигурационном файле boto
Примеры
# Basic configuration with Launch Configuration
- community.aws.ec2_asg:
name: special
load_balancers: [ 'lb1', 'lb2' ]
availability_zones: [ 'eu-west-1a', 'eu-west-1b' ]
launch_config_name: 'lc-1'
min_size: 1
max_size: 10
desired_capacity: 5
vpc_zone_identifier: [ 'subnet-abcd1234', 'subnet-1a2b3c4d' ]
tags:
- environment: production
propagate_at_launch: no
# Rolling ASG Updates
# Below is an example of how to assign a new launch config to an ASG and terminate old instances.
#
# All instances in "myasg" that do not have the launch configuration named "my_new_lc" will be terminated in
# a rolling fashion with instances using the current launch configuration, "my_new_lc".
#
# This could also be considered a rolling deploy of a pre-baked AMI.
#
# If this is a newly created group, the instances will not be replaced since all instances
# will have the current launch configuration.
- name: create launch config
community.aws.ec2_lc:
name: my_new_lc
image_id: ami-lkajsf
key_name: mykey
region: us-east-1
security_groups: sg-23423
instance_type: m1.small
assign_public_ip: yes
- community.aws.ec2_asg:
name: myasg
launch_config_name: my_new_lc
health_check_period: 60
health_check_type: ELB
replace_all_instances: yes
min_size: 5
max_size: 5
desired_capacity: 5
region: us-east-1
# To only replace a couple of instances instead of all of them, supply a list
# to "replace_instances":
- community.aws.ec2_asg:
name: myasg
launch_config_name: my_new_lc
health_check_period: 60
health_check_type: ELB
replace_instances:
- i-b345231
- i-24c2931
min_size: 5
max_size: 5
desired_capacity: 5
region: us-east-1
# Basic Configuration with Launch Template
- community.aws.ec2_asg:
name: special
load_balancers: [ 'lb1', 'lb2' ]
availability_zones: [ 'eu-west-1a', 'eu-west-1b' ]
launch_template:
version: '1'
launch_template_name: 'lt-example'
launch_template_id: 'lt-123456'
min_size: 1
max_size: 10
desired_capacity: 5
vpc_zone_identifier: [ 'subnet-abcd1234', 'subnet-1a2b3c4d' ]
tags:
- environment: production
propagate_at_launch: no
# Basic Configuration with Launch Template using mixed instance policy
- community.aws.ec2_asg:
name: special
load_balancers: [ 'lb1', 'lb2' ]
availability_zones: [ 'eu-west-1a', 'eu-west-1b' ]
launch_template:
version: '1'
launch_template_name: 'lt-example'
launch_template_id: 'lt-123456'
mixed_instances_policy:
instance_types:
- t3a.large
- t3.large
- t2.large
min_size: 1
max_size: 10
desired_capacity: 5
vpc_zone_identifier: [ 'subnet-abcd1234', 'subnet-1a2b3c4d' ]
tags:
- environment: production
propagate_at_launch: no
Значения возврата
Общие значения возврата описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| auto_scaling_group_arn строка | успех | Уникальный ARN группы автоматического масштабирования Пример: arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:6a09ad6d-eeee-1234-b987-ee123ced01ad:autoScalingGroupName/myasg |
| auto_scaling_group_name строка | успех | Уникальное имя группы автоматического масштабирования Пример: myasg |
| availability_zones список / элементы=строка | успех | Доступные зоны для группы автоматического масштабирования Пример: ['us-east-1d'] |
| created_time строка | успех | Отметка времени создания группы автоматического масштабирования Пример: 2017-11-08T14:41:48.272000+00:00 |
| default_cooldown целое число | успех | Время охлаждения по умолчанию в секундах. Пример: 300 |
| desired_capacity целое число | успех | Количество экземпляров EC2, которое должно работать в этой группе. Пример: 3 |
| healthcheck_period целое число | успех | Время в секундах, после того, как новый экземпляр EC2 вступает в службу, Auto Scaling начинает проверять его работоспособность. Пример: 30 |
| healthcheck_type строка | успех | Сервис, от которого вы хотите получить информацию о состоянии работоспособности, один из "EC2" или "ELB". Пример: ELB |
| healthy_instances целое число | успех | Количество экземпляров в работоспособном состоянии Пример: 5 |
| in_service_instances целое число | успех | Количество работающих экземпляров Пример: 3 |
| instance_facts словарь | успех | Словарь экземпляров EC2 и их состояния по отношению к группе ASG. Пример: {'i-0123456789012': {'health_status': 'Healthy', 'launch_config_name': 'public-webapp-production-1', 'lifecycle_state': 'InService'}} |
| instances список / элементы=строка | успех | Список идентификаторов экземпляров в группе ASG Пример: ['i-0123456789012'] |
| launch_config_name строка | успех | Имя конфигурации запуска, связанной с ASG. То же самое, что и launch_configuration_name, предоставлено для совместимости с модулем ec2_asg. Пример: public-webapp-production-1 |
| load_balancers список / элементы=строка | успех | Список имен балансировщиков нагрузки, подключенных к ASG. Пример: ['elb-webapp-prod'] |
| max_instance_lifetime целое число | успех | Максимальное время в секундах, в течение которого экземпляр может быть в службе. Пример: 604800 |
| max_size целое число | успех | Максимальный размер группы Пример: 3 |
| metrics_collection список / элементы=строка | успех | Список включенных метрик AutosSalingGroup Пример: [{'Granularity': '1Minute', 'Metric': 'GroupInServiceInstances'}] |
| min_size целое число | успех | Минимальный размер группы Пример: 1 |
| mixed_instance_policy список / элементы=строка | успех | Возвращает список типов экземпляров, если политика смешанных экземпляров установлена. Пример: ['t3.micro', 't3a.micro'] |
| pending_instances целое число | успех | Количество экземпляров в ожидающем состоянии Пример: 1 |
| tags список / элементы=строка | успех | Список меток для ASG и того, распространяется ли каждая метка на экземпляры при запуске. Пример: [{'key': 'Name', 'propagate_at_launch': 'true', 'resource_id': 'public-webapp-production-1', 'resource_type': 'auto-scaling-group', 'value': 'public-webapp-production-1'}, {'key': 'env', 'propagate_at_launch': 'true', 'resource_id': 'public-webapp-production-1', 'resource_type': 'auto-scaling-group', 'value': 'production'}] |
| target_group_arns список / элементы=строка | успех | Список ARNs целевых групп, которые заполняет ASG Пример: ['arn:aws:elasticloadbalancing:ap-southeast-2:123456789012:targetgroup/target-group-host-hello/1a2b3c4d5e6f1a2b', 'arn:aws:elasticloadbalancing:ap-southeast-2:123456789012:targetgroup/target-group-path-world/abcd1234abcd1234'] |
| target_group_names список / элементы=строка | успех | Список имён целевых групп, которые заполняет ASG Пример: ['target-group-host-hello', 'target-group-path-world'] |
| termination_policies список / элементы=строка | успех | Список политик завершения для группы. Пример: ['Default'] |
| unhealthy_instances целое число | успех | Количество экземпляров в неработоспособном состоянии |
| viable_instances целое число | успех | Количество работоспособных экземпляров Пример: 1 |
| vpc_zone_identifier строка | успех | Идентификатор зоны VPC / ID подсети для группы автоматического масштабирования Пример: subnet-a31ef45f |
Авторы
- Gareth Rushgrove (@garethr)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/aws/ec2_asg_module.html