ec2_asg - Создание или удаление групп автоматического масштабирования AWS
Новое в версии 1.6.
Обзор
- Может создавать или удалять группы автоматического масштабирования 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 | |
| default_cooldown (добавлено в 2.0) | По умолчанию: "300 секунд" | Количество секунд после завершения масштабирования, необходимое перед началом следующего масштабирования. |
| desired_capacity | Желаемое количество экземпляров в группе. Если не указано, используется текущее значение группы. | |
| ec2_url | URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль использует конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех других модулей, если регион не используется. Если не задан, используется значение переменной окружения EC2_URL, если таковая имеется. | |
| health_check_period (добавлено в 1.7) | По умолчанию: "500 секунд" | Время в секундах после запуска нового экземпляра EC2, которое Auto Scaling начинает проверять его состояние. |
| health_check_type (добавлено в 1.7) |
| Сервис, от которого необходимо получить статус работоспособности: Amazon EC2 или Elastic Load Balancer. |
| launch_config_name обязательно | Имя конфигурации запуска для группы. См. модуль ec2_lc для управления ими. Если не указано, используется текущее значение группы. | |
| lc_check (добавлено в 1.8) | По умолчанию: "да" | Проверка, чтобы экземпляры, которые заменяются с помощью replace_instances, не имели текущую конфигурацию запуска. |
| load_balancers | Список имен ELB для использования в группе. Используется для классических балансировщиков нагрузки. | |
| max_size | Максимальное количество экземпляров в группе. Если не указано, используется текущее значение группы. | |
| metrics_collection bool (добавлено в 2.5) |
| Включить сборку метрик ASG |
| metrics_granularity (добавлено в 2.5) | По умолчанию: "1 минута" | При включенном metrics_collection, это определяет гранулярность собираемых метрик CloudWatch |
| metrics_list (добавлено в 2.5) | По умолчанию: ["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 (добавлено в 1.6) | Использует профиль 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 (добавлено в 1.8) | По умолчанию: "нет" | Поэтапная замена всех экземпляров со старой конфигурацией запуска на экземпляры с текущей конфигурацией запуска. |
| replace_batch_size (добавлено в 1.8) | По умолчанию: 1 | Количество экземпляров, которые необходимо заменить за один раз. Используется с replace_all_instances. |
| replace_instances (добавлено в 1.8) | Список идентификаторов экземпляров, принадлежащих указанному ASG, которые необходимо завершить и заменить экземплярами, соответствующими текущей конфигурации запуска. | |
| security_token (добавлено в 1.6) | Токен безопасности AWS STS. Если не задан, используется значение переменной окружения AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN. Псевдонимы: access_token | |
| state |
| Регистрация или отмена регистрации экземпляра |
| suspend_processes (добавлено в 2.3) |
[] | Список процессов масштабирования для приостановки. |
| tags (добавлено в 1.7) | Список тегов для добавления в группу Auto Scale. Дополнительный ключ — 'propagate_at_launch', который по умолчанию равен true. | |
| target_group_arns (добавлено в 2.4) | Список ARNs групп целевых экземпляров для использования в группе. Используется для балансировщиков нагрузки приложений. | |
| termination_policies (добавлено в 2.0) |
| Отсортированный список критериев, используемых для выбора экземпляров, которые будут удалены из группы Auto Scaling при уменьшении ёмкости. Для 'По умолчанию', при создании новой группы автомасштабирования, используется значение "По умолчанию". При изменении существующей группы автомасштабирования, текущие политики завершения сохраняются. |
| validate_certs bool (добавлено в 1.5) |
| При значении "нет", сертификаты SSL не будут проверены для версий boto >= 2.6.0. |
| vpc_zone_identifier | Список идентификаторов подсетей VPC для использования | |
| wait_for_instances (добавлено в 1.9) | По умолчанию: "да" | Ожидание, пока экземпляры ASG перейдут в готовое состояние перед завершением. Если экземпляры находятся за ELB, ожидание будет продолжаться до тех пор, пока ELB не определит, что все экземпляры имеют состояние lifecycle_state "В работе" и состояние health_status "Нормально". |
| wait_timeout (добавлено в 1.8) | По умолчанию: 300 | Время ожидания, пока экземпляры станут работоспособными при замене. Если возникает ошибка "Ожидание слишком долго, пока экземпляры ELB будут работоспособными", попробуйте увеличить это значение. |
Примечания
Примечание
- Если параметры не заданы в модуле, можно использовать следующие переменные среды в порядке убывания приоритета
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), если учетные данные не предоставлены. См. http://boto.readthedocs.org/en/latest/boto_config_tut.html
-
AWS_REGIONилиEC2_REGIONобычно используются для указания региона AWS, если требуется, но это также можно настроить в файле конфигурации boto
Примеры
# Basic 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
Значения возврата
Общие значения возврата документированы здесь, следующие — поля, уникальные для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| auto_scaling_group_arn str | успешно | Уникальный ARN группы автоматического масштабирования Пример: arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:6a09ad6d-eeee-1234-b987-ee123ced01ad:autoScalingGroupName/myasg |
| auto_scaling_group_name str | успешно | Уникальное имя группы автоматического масштабирования Пример: myasg |
| availability_zones list | успешно | Зоны доступности для группы автоматического масштабирования Пример: ['us-east-1d'] |
| created_time str | успешно | Маркер времени создания группы автоматического масштабирования Пример: 2017-11-08T14:41:48.272000+00:00 |
| default_cooldown int | успешно | Время охлаждения по умолчанию в секундах. Пример: 300 |
| desired_capacity int | успешно | Количество экземпляров EC2, которые должны быть запущены в этой группе. Пример: 3 |
| healthcheck_period int | успешно | Время в секундах, после которого новый экземпляр EC2 начинает проверку работоспособности Auto Scaling. Пример: 30 |
| healthcheck_type str | успешно | Сервис, от которого требуется получить состояние работоспособности, "EC2" или "ELB". Пример: ELB |
| healthy_instances int | успешно | Количество экземпляров в работоспособном состоянии Пример: 5 |
| in_service_instances int | успешно | Количество экземпляров в работе Пример: 3 |
| instance_facts dict | успешно | Словарь экземпляров EC2 и их состояния по отношению к ASG. Пример: {'i-0123456789012': {'health_status': 'Healthy', 'launch_config_name': 'public-webapp-production-1', 'lifecycle_state': 'InService'}} |
| instances list | успешно | Список идентификаторов экземпляров в ASG Пример: ['i-0123456789012'] |
| launch_config_name str | успешно | Имя конфигурации запуска, связанной с ASG. То же самое, что и launch_configuration_name, предоставлено для совместимости с модулем ec2_asg. Пример: public-webapp-production-1 |
| load_balancers list | успешно | Список имен балансировщиков нагрузки, подключенных к ASG. Пример: ['elb-webapp-prod'] |
| max_size int | успешно | Максимальный размер группы Пример: 3 |
| metrics_collection list | успешно | Список включённых метрик AutoscalingGroup. Пример: [{'Granularity': '1Minute', 'Metric': 'GroupInServiceInstances'}] |
| min_size int | успешно | Минимальный размер группы Пример: 1 |
| pending_instances int | успешно | Количество экземпляров в состоянии ожидания Пример: 1 |
| tags list | успешно | Список тегов для 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 list | успешно | Список ARN целевых групп, которые заполняет 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 list | успешно | Список имён целевых групп, которые заполняет ASG Пример: ['target-group-host-hello', 'target-group-path-world'] |
| termination_policies str | успешно | Список политик завершения для группы. Пример: ['Default'] |
| unhealthy_instances int | успешно | Количество экземпляров в неработоспособном состоянии |
| viable_instances int | успешно | Количество работоспособных экземпляров Пример: 1 |
| vpc_zone_identifier str | успешно | Идентификатор зоны VPC/подсети для группы автоматического масштабирования Пример: subnet-a31ef45f |
Статус
Этот модуль помечен как stableinterface, что означает, что разработчики этого модуля гарантируют отсутствие несовместимых изменений интерфейса.
Техническое обслуживание
Этот модуль помечен как сертифицированный, что означает, что он поддерживается партнером Ansible. Для получения дополнительной информации см. Техническая поддержка и обслуживание модулей.
Список других модулей, также поддерживаемых партнером Ansible, см. здесь.
Автор
- 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.6/modules/ec2_asg_module.html