ec2_asg – Создание или удаление групп автоматического масштабирования AWS
Описание
- Может создавать или удалять группы автоматического масштабирования 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. Псевдонимы: ec2_access_key, access_key | ||
| aws_secret_key строка | AWS секретный ключ. Если не задан, используется значение переменной среды AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY или EC2_SECRET_KEY. Псевдонимы: ec2_secret_key, secret_key | ||
| debug_botocore_endpoint_logs логический добавлен в 2.8 |
| Использовать логгер botocore.endpoint для анализа уникальных (а не общих) API-вызовов «ресурс:действие», выполненных во время задачи, выводить набор в ключ resource_actions результатов задачи. Используйте обратный вызов aws_resource_action для вывода в полный список, выполненный во время выполнения playbook. Также может использоваться переменная среды ANSIBLE_DEBUG_BOTOCORE_LOGS. | |
| default_cooldown - добавлен в 2.0 | По умолчанию: "300 секунд" | Количество секунд после завершения масштабирующей активности, прежде чем можно будет начать другую. | |
| desired_capacity - | Желаемое количество экземпляров в группе. Если не указано, используется текущее значение группы. | ||
| ec2_url строка | URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль использует конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех остальных модулей, если не используется регион. Если не задан, используется значение переменной среды EC2_URL, если таковое есть. | ||
| health_check_period - | По умолчанию: "300 секунд" | Время в секундах после ввода в эксплуатацию нового экземпляра EC2, которое Auto Scaling начинает проверять его работоспособность. | |
| health_check_type - |
| Сервис, от которого вы хотите получить статус работоспособности: Amazon EC2 или Elastic Load Balancer. | |
| launch_config_name - | Имя конфигурации запуска для использования в группе. См. модуль ec2_lc для управления ими. Если не указано, используется текущее значение группы. Должен быть указан один из launch_config_name или launch_template. | ||
| launch_template - добавлен в 2.8 | Словарь, описывающий шаблон запуска. | ||
| launch_template_id - | Идентификатор шаблона запуска. Требуется только один из launch_template_name или launch_template_id. | ||
| launch_template_name - | Имя шаблона запуска. Требуется только один из launch_template_name или launch_template_id. | ||
| version - | По умолчанию: "последняя" | Номер версии шаблона запуска. По умолчанию используется последняя версия, если не указано. | |
| lc_check логический |
| Проверка, чтобы экземпляры, которые заменяются с помощью replace_instances, не имели текущей конфигурации запуска. | |
| load_balancers - | Список имён ELB для использования в группе. Используется для классических балансировщиков нагрузки. | ||
| lt_check логический добавлен в 2.8 |
| Проверка, чтобы экземпляры, которые заменяются с помощью replace_instances, не имели текущий шаблон запуска или версию шаблона запуска. | |
| max_size - | Максимальное количество экземпляров в группе. Если не указано, используется текущее значение группы. | ||
| metrics_collection логический добавлен в 2.6 |
| Включить сборку метрик ASG. | |
| metrics_granularity - добавлен в 2.6 | По умолчанию: "1 минута" | Когда metrics_collection включен, это определяет точность метрик, собираемых CloudWatch. | |
| metrics_list - добавлен в 2.6 | По умолчанию: ["GroupMinSize", "GroupMaxSize", "GroupDesiredCapacity", "GroupInServiceInstances", "GroupPendingInstances", "GroupStandbyInstances", "GroupTerminatingInstances", "GroupTotalInstances"] | Список метрик автомасштабирования для сбора при включении metrics_collection. | |
| min_size - | Минимальное количество экземпляров в группе. Если не указано, используется текущее значение группы. | ||
| name - / обязательно | Уникальное имя для создаваемой или удаляемой группы. | ||
| notification_topic - добавлен в 2.2 | ARN темы SNS для отправки уведомлений автомасштабирования. | ||
| notification_types - добавлен в 2.2 | По умолчанию: ["autoscaling:EC2_INSTANCE_LAUNCH", "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", "autoscaling:EC2_INSTANCE_TERMINATE", "autoscaling:EC2_INSTANCE_TERMINATE_ERROR"] | Список событий автомасштабирования для срабатывания уведомлений. | |
| placement_group - добавлен в 2.3 | Физическое расположение группы размещения кластера, созданной в Amazon EC2. | ||
| profile строка | Использует профиль boto. Работает только с boto >= 2.24.0. | ||
| 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 логический |
| Поэтапная замена всех экземпляров, использовавших старую конфигурацию запуска, на экземпляры из новой конфигурации запуска. Увеличивает размер ASG на replace_batch_size, ожидает завершения запуска новых экземпляров. После этого, завершает пакет старых экземпляров, ожидает замены и повторяет, пока все старые экземпляры не будут заменены. После этого размер ASG уменьшается до ожидаемого значения. | |
| replace_batch_size - | По умолчанию: 1 | Количество экземпляров, которые нужно заменить за один раз. Используется с replace_all_instances. | |
| replace_instances - | Список идентификаторов экземпляров, принадлежащих указанной группе ASG, которые необходимо завершить и заменить экземплярами, соответствующими текущей конфигурации запуска. | ||
| security_token строка | Токен безопасности AWS STS. Если не задан, используется значение переменной окружения AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN. псевдонимы: access_token | ||
| state - |
| зарегистрировать или дезактивировать экземпляр | |
| suspend_processes - добавлено в 2.3 |
[] | Список процессов масштабирования для приостановки. | |
| tags - | Список тегов для добавления в группу Auto Scale. Необязательный ключ 'propagate_at_launch', по умолчанию true. | ||
| target_group_arns - добавлено в 2.4 | Список ARNs групп целевых серверов для использования в группе. Используется для балансировщиков нагрузки приложений. | ||
| termination_policies - добавлено в 2.0 |
| Упорядоченный список критериев, используемых для выбора экземпляров, которые необходимо удалить из группы Auto Scaling при уменьшении емкости. Для «По умолчанию», при создании новой группы автомасштабирования используется значение «По умолчанию». При изменении существующей группы автомасштабирования сохраняются текущие политики завершения. | |
| validate_certs булево |
| При установке в «no», сертификаты SSL не будут проверяться для версий boto >= 2.6.0. | |
| vpc_zone_identifier - | Список идентификаторов подсетей VPC для использования | ||
| wait_for_instances булево |
| Ожидать, пока экземпляры ASG будут в состоянии готовности перед завершением. Если экземпляры находятся за ELB, ожидание будет продолжаться, пока ELB не определит, что все экземпляры имеют состояние жизненного цикла «InService» и состояние здоровья «Healthy». | |
| wait_timeout - | По умолчанию: 300 | Время ожидания, пока экземпляры станут работоспособными при замене. Если вы получаете ошибку «Waited too long for ELB instances to be healthy», попробуйте увеличить это значение. | |
Примечания
Примечание
- Если параметры не заданы в модуле, можно использовать следующие переменные среды в порядке убывания приоритета
AWS_URLилиEC2_URL,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 - Ansible использует конфигурационный файл boto (обычно ~/.boto), если учетные данные не предоставлены. См. https://boto.readthedocs.io/en/latest/boto_config_tut.html
-
AWS_REGIONилиEC2_REGIONможно использовать для указания региона AWS, когда это необходимо, но это также можно настроить в файле конфигурации boto
Примеры
# Basic configuration with Launch Configuration
- 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
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
- 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":
- 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
- 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
Значения возврата
Общие значения возврата описаны здесь, следующие — поля, уникальные для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| 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_size целое число | успех | Максимальный размер группы Пример: 3 |
| metrics_collection список | успех | Список включённых метрик AutosScalingGroup Пример: [{'Granularity': '1Minute', 'Metric': 'GroupInServiceInstances'}] |
| min_size целое число | успех | Минимальный размер группы Пример: 1 |
| pending_instances целое число | успех | Количество инстансов в состоянии ожидания Пример: 1 |
| tags список | успех | Список тегов для ASG и информация о том, распространяются ли они на инстансы при запуске. Пример: [{'key': 'Name', 'value': 'public-webapp-production-1', 'resource_id': 'public-webapp-production-1', 'resource_type': 'auto-scaling-group', 'propagate_at_launch': 'true'}, {'key': 'env', 'value': 'production', 'resource_id': 'public-webapp-production-1', 'resource_type': 'auto-scaling-group', 'propagate_at_launch': 'true'}] |
| 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 |
Статус
- В этом модуле гарантируется отсутствие изменений интерфейса, несовместимых с предыдущими версиями. [stableinterface]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- 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.8/modules/ec2_asg_module.html