ec2_instance – Создание и управление экземплярами EC2
Новая версия с 2.5.
Описание
- Создание и управление экземплярами AWS EC2
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- boto
- boto3
- botocore
- python >= 2.6
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| availability_zone - | Укажите зону доступности для использования подсети по умолчанию. Полезно, если параметр vpc_subnet_id не указан. Если подсеть, ENI или зона доступности не указаны, будет использована подсеть по умолчанию в VPC по умолчанию в первой зоне доступности (в алфавитном порядке). | ||
| 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 | ||
| cpu_credit_specification - |
| Для экземпляров серии T2 выберите, разрешить ли повышенные расходы на покупку кредитов ЦП, если пул по умолчанию исчерпан. Выберите unlimited, чтобы разрешить покупку дополнительных кредитов ЦП. | |
| cpu_options - добавлено в 2.7 | Уменьшить количество vCPU, доступных экземпляру. Эти параметры можно задать только при запуске экземпляра. Два подпараметра threads_per_core и core_count обязательны. См. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html для доступных комбинаций. Требуется botocore >= 1.10.16 | ||
| core_count - / обязательно | Установите количество ядер для включения. | ||
| threads_per_core - / обязательно |
| Выберите количество потоков на ядро для включения. Отключить или включить Intel HT. | |
| debug_botocore_endpoint_logs логический тип добавлено в 2.8 |
| Использовать логи ротор botocore.endpoint для анализа уникальных (а не общих) API-вызовов «ресурс:действие» во время задачи, выводить набор в ключ resource_actions в результатах задачи. Используйте обратный вызов aws_resource_action для вывода в общий список, созданный во время выполнения книги сценариев. Также может использоваться переменная среды ANSIBLE_DEBUG_BOTOCORE_LOGS. | |
| detailed_monitoring логический тип |
| Разрешить сбор подробных метрик cloudwatch, что позволит собирать более подробные оповещения. | |
| ebs_optimized логический тип |
| Использовать оптимизированные тома EBS для экземпляра, см. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html. | |
| ec2_url строка | URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль использует конечные точки EC2). Игнорируется для модулей, где регион требуется. Должен быть указан для всех других модулей, если регион не используется. Если не задан, используется значение переменной среды EC2_URL, если она есть. | ||
| filters - | По умолчанию: {"subnet-id": "\u003cпредоставленная-или-по-умолчанию подсеть\u003e", "tag:Name": "\u003cпредоставленное-значение-атрибута-Name\u003e"} | Словарь фильтров, применяемых при определении, подходят ли существующие экземпляры и должны ли они быть изменены. Каждый элемент словаря состоит из ключа фильтра и значения фильтра. См. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html для возможных фильтров. Имена и значения фильтров чувствительны к регистру. По умолчанию, экземпляры отфильтровываются для подсчета по тегу "Name", базовой AMI, состоянию (running по умолчанию) и ID подсети. Можно использовать любые запросы фильтров. Хорошими кандидатами являются определенные теги, ключи SSH или группы безопасности. | |
| image - | Изображение для использования в экземпляре. Модуль ec2_ami_facts может использоваться для извлечения изображений. Один из параметров image или image_id требуется, когда экземпляр еще не существует. Сложный объект, содержащий image.id, image.ramdisk и image.kernel.
image.id — ID AMI.
image.ramdisk переопределяет ID дисков RAM по умолчанию AMI.
image.kernel — строка AKI для переопределения ядра AMI. | ||
| image_id - |
ID ami для использования в экземпляре. Один из параметров image или image_id требуется, когда экземпляр еще не существует. Это псевдоним для image.id. | ||
| instance_ids - | Если вы укажете один или несколько ID экземпляров, будут возвращены только экземпляры, у которых указаны эти ID. | ||
| instance_initiated_shutdown_behavior - |
| Остановка или завершение экземпляра при выключении. | |
| instance_role - | ARN или имя роли экземпляра EC2 для использования. Если имя не указано в формате arn, разрешение ListInstanceProfiles также должно быть предоставлено. https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html Если не указан полный ARN, роль с соответствующим именем будет взята из активной учетной записи AWS. | ||
| instance_type - | По умолчанию: "t2.micro" | Тип экземпляра для использования в экземпляре, см. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Требуется только когда экземпляр еще не существует. | |
| key_name - | Имя ключа SSH для назначения экземпляру — должен существовать в регионе, где создается экземпляр. | ||
| launch_template - | Шаблон запуска EC2 для создания конфигурации экземпляра.
launch_template.id ID или шаблон запуска (необязательно, если указано имя).
launch_template.name красивое имя шаблона запуска (необязательно, если указан ID).
launch_template.version определенная версия шаблона запуска для использования. Если не указана, выбирается версия шаблона по умолчанию. | ||
| name - | Тег имени для экземпляра. | ||
| network - | Либо словарь, содержащий ключ 'interfaces', соответствующий списку ID сетевых интерфейсов, либо содержащий спецификации для одного сетевого интерфейса. Если заданы спецификации для одного сетевого интерфейса, допустимые ключи: assign_public_ip (логический тип), private_ip_address (строка), ipv6_addresses (список), source_dest_check (логический тип), description (строка), delete_on_termination (логический тип), device_index (целое число), groups (список ID групп безопасности), private_ip_addresses (список), subnet_id (строка).
network.interfaces должен быть списком ID ENI (строки) или списком объектов, содержащих ключ id. Используйте ec2_eni для создания ENI со специальными настройками. | ||
| placement_group - добавлено в 2.8 | Группа размещения, которая должна быть назначена экземпляру. | ||
| profile строка | Использует профиль boto. Работает только с boto >= 2.24.0. | ||
| purge_tags логический тип |
| Удалить любые теги, не указанные в задаче, которые есть на экземпляре. Это означает, что вы должны указать все желаемые теги в каждой задаче, влияющей на экземпляр. | |
| регион строка | AWS регион для использования. Если не указано, используется значение переменной окружения AWS_REGION или EC2_REGION, если таковая имеется. См. http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region
псевдонимы: aws_region, ec2_region | ||
| группа_безопасности - | Идентификатор или имя группы безопасности. Взаимоисключающее с security_groups. | ||
| группы_безопасности - | Список идентификаторов или имён групп безопасности (строки). Взаимоисключающее с security_group. | ||
| токен_безопасности строка | Токен безопасности AWS STS. Если не задан, используется значение переменной окружения AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN. псевдонимы: access_token | ||
| состояние - |
| Целевое состояние экземпляров. | |
| метки - | Хэш/словарь меток для добавления к новому экземпляру или для добавления/удаления из существующего. | ||
| tenancy - |
| Тип аренды, который должен использовать экземпляр. По умолчанию используется общая аренда. Аренда выделенных ресурсов повлечёт дополнительные расходы. | |
| защита_от_удаления булево |
| Включить защиту от удаления. Данный модуль не удалит экземпляр с активной защитой от удаления, её необходимо сначала отключить. | |
| tower_callback - | Преднастроенные данные пользователя для выполнения обратного вызова Tower (только для Linux). Взаимоисключающее с user_data. Для экземпляров Windows, чтобы включить удаленный доступ через Ansible, установите tower_callback.windows в значение true, и необязательно задайте пароль администратора. Если используется 'windows' и 'set_password', обратный вызов в Tower не будет выполнен, но экземпляр будет готов для приема подключений winrm от Ansible. | ||
| host_config_key - | Секретный ключ конфигурации хоста, сгенерированный шаблоном задачи Tower. | ||
| job_template_id - | Целочисленный ID шаблона задачи Tower или имя (имя поддерживается только для Tower 3.2+). | ||
| tower_address - | IP-адрес или доменное имя сервера Tower. Должен быть доступен по этому адресу из VPC, в котором будет запущен данный экземпляр. | ||
| user_data - | Неструктурированные данные, доступные экземпляру ec2 | ||
| validate_certs булево |
| Если установлено в "no", сертификаты SSL не будут проверены для версий boto >= 2.6.0. | |
| volumes - | Список отображений блочных устройств, по умолчанию всегда используется корневое устройство AMI, поэтому опция volumes предназначена в основном для добавления дополнительного хранилища. Сопоставление содержит (необязательные) ключи device_name, virtual_name, ebs.volume_type, ebs.volume_size, ebs.kms_key_id, ebs.iops и ebs.delete_on_termination. Дополнительную информацию о каждом параметре см. https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html. | ||
| vpc_subnet_id - | ID подсети VPC, в которой должен быть запущен экземпляр. Если не указано, ec2_instance выберет стандартную зону стандартной VPC. псевдонимы: subnet_id | ||
| wait булево |
| Ожидать достижения желаемого состояния (используйте wait_timeout для настройки этого). | |
| wait_timeout - | По умолчанию: 600 | Сколько времени ждать (в секундах), пока экземпляр не завершит загрузку/удаление. | |
Примечания
Примечание
- Если параметры не установлены в модуле, следующие переменные среды могут использоваться в порядке убывания приоритета
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
Примеры
# Note: These examples do not set authentication details, see the AWS Guide for details.
# Terminate every running instance in a region. Use with EXTREME caution.
- ec2_instance:
state: absent
filters:
instance-state-name: running
# restart a particular instance by its ID
- ec2_instance:
state: restarted
instance_ids:
- i-12345678
# start an instance with a public IP address
- ec2_instance:
name: "public-compute-instance"
key_name: "prod-ssh-key"
vpc_subnet_id: subnet-5ca1ab1e
instance_type: c5.large
security_group: default
network:
assign_public_ip: true
image_id: ami-123456
tags:
Environment: Testing
# start an instance and Add EBS
- ec2_instance:
name: "public-withebs-instance"
vpc_subnet_id: subnet-5ca1ab1e
instance_type: t2.micro
key_name: "prod-ssh-key"
security_group: default
volumes:
- device_name: /dev/sda1
ebs:
volume_size: 16
delete_on_termination: true
# start an instance with a cpu_options
- ec2_instance:
name: "public-cpuoption-instance"
vpc_subnet_id: subnet-5ca1ab1e
tags:
Environment: Testing
instance_type: c4.large
volumes:
- device_name: /dev/sda1
ebs:
delete_on_termination: true
cpu_options:
core_count: 1
threads_per_core: 1
# start an instance and have it begin a Tower callback on boot
- ec2_instance:
name: "tower-callback-test"
key_name: "prod-ssh-key"
vpc_subnet_id: subnet-5ca1ab1e
security_group: default
tower_callback:
# IP or hostname of tower server
tower_address: 1.2.3.4
job_template_id: 876
host_config_key: '[secret config key goes here]'
network:
assign_public_ip: true
image_id: ami-123456
cpu_credit_specification: unlimited
tags:
SomeThing: "A value"
# start an instance with ENI (An existing ENI ID is required)
- ec2_instance:
name: "public-eni-instance"
key_name: "prod-ssh-key"
vpc_subnet_id: subnet-5ca1ab1e
network:
interfaces:
- id: "eni-12345"
tags:
Env: "eni_on"
volumes:
- device_name: /dev/sda1
ebs:
delete_on_termination: true
instance_type: t2.micro
image_id: ami-123456
# add second ENI interface
- ec2_instance:
name: "public-eni-instance"
network:
interfaces:
- id: "eni-12345"
- id: "eni-67890"
image_id: ami-123456
tags:
Env: "eni_on"
instance_type: t2.micro
Значения возврата
Общие значения возврата описаны в этом разделе, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание | ||||
|---|---|---|---|---|---|---|
| экземпляры сложный | когда wait == true | список экземпляров ec2 | ||||
| ami_launch_index целое число | всегда | Индекс запуска AMI, который можно использовать для поиска этого экземпляра в группе запуска. | ||||
| архитектура строка | всегда | Архитектура образа Пример: x86_64 | ||||
| block_device_mappings сложный | всегда | Любые записи сопоставления блочных устройств для экземпляра. | ||||
| имя_устройства строка | всегда | Имя устройства, доступного для экземпляра (например, /dev/sdh или xvdh). Пример: /dev/sdh | ||||
| ebs сложный | всегда | Параметры, используемые для автоматической настройки томов EBS при запуске экземпляра. | ||||
| время_присоединения строка | всегда | Отметка времени, когда началось присоединение. Пример: 2017-03-23T22:51:24+00:00 | ||||
| удалять_при_завершении логическое | всегда | Указывает, будет ли том удален при завершении экземпляра. Пример: True | ||||
| состояние строка | всегда | Состояние присоединения. Пример: присоединён | ||||
| id_тома строка | всегда | ID тома EBS Пример: vol-12345678 | ||||
| client_token строка | всегда | Маркер идемпотентности, предоставленный вами при запуске экземпляра, если применимо. Пример: mytoken | ||||
| ebs_optimized логическое | всегда | Указывает, оптимизирован ли экземпляр для ввода-вывода EBS. | ||||
| гипервизор строка | всегда | Тип гипервизора экземпляра. Пример: xen | ||||
| iam_instance_profile сложный | всегда | Профиль IAM экземпляра, связанный с экземпляром, если применимо. | ||||
| arn строка | всегда | Amazon Resource Name (ARN) профиля экземпляра. Пример: arn:aws:iam::000012345678:instance-profile/myprofile | ||||
| id строка | всегда | ID профиля экземпляра Пример: JFJ397FDG400FG9FD1N | ||||
| image_id строка | всегда | ID AMI, используемого для запуска экземпляра. Пример: ami-0011223344 | ||||
| instance_id строка | всегда | ID экземпляра. Пример: i-012345678 | ||||
| instance_type строка | всегда | Размер типа экземпляра работающего экземпляра. Пример: t2.micro | ||||
| key_name строка | всегда | Имя пары ключей, если этот экземпляр был запущен с связанной парой ключей. Пример: my-key | ||||
| launch_time строка | всегда | Время запуска экземпляра. Пример: 2017-03-23T22:51:24+00:00 | ||||
| monitoring сложный | всегда | Мониторинг для экземпляра. | ||||
| состояние строка | всегда | Указывает, включен ли подробный мониторинг. В противном случае включен базовый мониторинг. Пример: выключен | ||||
| network.source_dest_check логическое | всегда | Указывает, включена ли проверка источника/назначения. Пример: True | ||||
| network_interfaces сложный | всегда | Один или несколько сетевых интерфейсов для экземпляра. | ||||
| association сложный | всегда | Информация об ассоциации с Elastic IPv4, связанной с сетевым интерфейсом. | ||||
| ip_owner_id строка | всегда | ID владельца адреса Elastic IP. Пример: amazon | ||||
| public_dns_name строка | всегда | Публичное имя DNS. | ||||
| public_ip строка | всегда | Публичный IP-адрес или адрес Elastic IP, привязанный к сетевому интерфейсу. Пример: 1.2.3.4 | ||||
| attachment сложный | всегда | Присоединение сетевого интерфейса. | ||||
| время_присоединения строка | всегда | Отметка времени, когда началось присоединение. Пример: 2017-03-23T22:51:24+00:00 | ||||
| attachment_id строка | всегда | Идентификатор подключения сетевого интерфейса. Пример: eni-attach-3aff3f | ||||
| delete_on_termination булево | всегда | Указывает, будет ли сетевой интерфейс удалён при завершении работы экземпляра. Пример: True | ||||
| device_index целое число | всегда | Индекс устройства на экземпляре для подключения сетевого интерфейса. | ||||
| status строка | всегда | Состояние подключения. Пример: attached | ||||
| description строка | всегда | Описание. Пример: Мой интерфейс | ||||
| groups список сложных объектов | всегда | Один или несколько сетевых групп. | ||||
| group_id строка | всегда | Идентификатор сетевой группы. Пример: sg-abcdef12 | ||||
| group_name строка | всегда | Имя сетевой группы. Пример: mygroup | ||||
| ipv6_addresses сложный объект | всегда | Один или несколько адресов IPv6, связанных с сетевым интерфейсом. | ||||
| ipv6_address строка | всегда | Адрес IPv6. Пример: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 | ||||
| mac_address строка | всегда | MAC-адрес. Пример: 00:11:22:33:44:55 | ||||
| network_interface_id строка | всегда | Идентификатор сетевого интерфейса. Пример: eni-01234567 | ||||
| owner_id строка | всегда | AWS идентификатор владельца сетевого интерфейса. Пример: 01234567890 | ||||
| private_ip_address строка | всегда | IPv4 адрес сетевого интерфейса внутри подсети. Пример: 10.0.0.1 | ||||
| private_ip_addresses список сложных объектов | всегда | Частные IPv4 адреса, связанные с сетевым интерфейсом. | ||||
| association сложный объект | всегда | Информация об ассоциации с адресом Elastic IP (IPv4), связанным с сетевым интерфейсом. | ||||
| ip_owner_id строка | всегда | Идентификатор владельца адреса Elastic IP. Пример: amazon | ||||
| public_dns_name строка | всегда | Общедоступное DNS имя. | ||||
| public_ip строка | всегда | Общедоступный IP-адрес или адрес Elastic IP, привязанный к сетевому интерфейсу. Пример: 1.2.3.4 | ||||
| primary булево | всегда | Указывает, является ли этот IPv4 адрес основным частным IP-адресом сетевого интерфейса. Пример: True | ||||
| private_ip_address строка | всегда | Частный IPv4 адрес сетевого интерфейса. Пример: 10.0.0.1 | ||||
| source_dest_check булево | всегда | Указывает, включена ли проверка источника/назначения. Пример: True | ||||
| status строка | всегда | Статус сетевого интерфейса. Пример: в использовании | ||||
| subnet_id строка | всегда | Идентификатор подсети для сетевого интерфейса. Пример: subnet-0123456 | ||||
| vpc_id строка | всегда | Идентификатор VPC для сетевого интерфейса. Пример: vpc-0123456 | ||||
| placement сложный объект | всегда | Место расположения запущенного экземпляра, если применимо. | ||||
| availability_zone строка | всегда | Доступная зона экземпляра. Пример: ap-southeast-2a | ||||
| group_name строка | всегда | Название группы размещения, в которой находится экземпляр (для кластерных вычислительных экземпляров). | ||||
| tenancy строка | всегда | Тип аренды экземпляра (если экземпляр работает в VPC). Пример: default | ||||
| private_dns_name строка | всегда | Название частного DNS. Пример: ip-10-0-0-1.ap-southeast-2.compute.internal | ||||
| private_ip_address строка | всегда | IPv4-адрес сетевого интерфейса внутри подсети. Пример: 10.0.0.1 | ||||
| product_codes список комплексных | всегда | Один или несколько кодов продукта. | ||||
| product_code_id строка | всегда | Код продукта. Пример: aw0evgkw8ef3n2498gndfgasdfsd5cce | ||||
| product_code_type строка | всегда | Тип кода продукта. Пример: marketplace | ||||
| public_dns_name строка | всегда | Публичное имя DNS, назначенное экземпляру. | ||||
| public_ip_address строка | всегда | Публичный IPv4-адрес, назначенный экземпляру. Пример: 52.0.0.1 | ||||
| root_device_name строка | всегда | Имя устройства корневого устройства. Пример: /dev/sda1 | ||||
| root_device_type строка | всегда | Тип корневого устройства, используемого AMI. Пример: ebs | ||||
| security_groups список комплексных | всегда | Один или несколько сетевых групп для экземпляра. | ||||
| group_id строка | всегда | ID группы безопасности. Пример: sg-0123456 | ||||
| group_name строка | всегда | Имя группы безопасности. Пример: my-security-group | ||||
| state комплексный | всегда | Текущее состояние экземпляра. | ||||
| code целое число | всегда | Нижние байты представляют состояние. Пример: 16 | ||||
| name строка | всегда | Имя состояния. Пример: running | ||||
| state_transition_reason строка | всегда | Причина последнего перехода состояния. | ||||
| subnet_id строка | всегда | ID подсети, в которой работает экземпляр. Пример: subnet-00abcdef | ||||
| tags словарь | всегда | Присвоенные теги экземпляру. | ||||
| virtualization_type строка | всегда | Тип виртуализации AMI. Пример: hvm | ||||
| vpc_id словарь | всегда | ID VPC, в котором находится экземпляр. Пример: vpc-0011223344 | ||||
Статус
- Этот модуль не гарантирует обратной совместимости интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Ryan Scott Brown (@ryansb)
Подсказка
Если вы заметите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 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_instance_module.html