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 | Уменьшите количество виртуальных ядер ЦП, доступных для экземпляра. Эти параметры могут быть установлены только при запуске экземпляра. Два подпараметра 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, состоянию (работающему по умолчанию) и ID подсети. Можно использовать любой запрошиваемый фильтр. Хорошими кандидатами являются конкретные теги, ключи SSH или группы безопасности. | |
| image - | Изображение для использования для экземпляра. Модуль ec2_ami_info может использоваться для получения изображений. Один из image или image_id требуется, когда экземпляр еще не существует. Сложный объект, содержащий image.id, image.ramdisk и image.kernel.
image.id — ID AMI.
image.ramdisk переопределяет ID системного диска по умолчанию AMI.
image.kernel — строка AKI для переопределения ядра AMI. | ||
| image_id - |
ID AMI для использования для экземпляра. Один из image или image_id требуется, когда экземпляр еще не существует. Это псевдоним для image.id. | ||
| instance_ids - | Если вы укажете один или несколько идентификаторов экземпляров, будут возвращены только экземпляры, имеющие указанные идентификаторы. | ||
| 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 - | Тег "Name" для экземпляра. | ||
| network - | Либо словарь, содержащий ключ 'interfaces', соответствующий списку идентификаторов сетевых интерфейсов, либо содержащий параметры для одного сетевого интерфейса. Если заданы параметры для одного сетевого интерфейса, допустимые ключи — assign_public_ip (булево), private_ip_address (строка), ipv6_addresses (список), source_dest_check (булево), description (строка), delete_on_termination (булево), device_index (целое число), groups (список идентификаторов групп безопасности), 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
Значения возврата
Общие значения возврата описаны в этом разделе, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание | ||||
|---|---|---|---|---|---|---|
| instances complex | при wait == true | список ec2 инстансов | ||||
| ami_launch_index integer | всегда | Индекс запуска AMI, который можно использовать для поиска этого инстанса в группе запусков. | ||||
| architecture string | всегда | Архитектура образа Пример: x86_64 | ||||
| block_device_mappings complex | всегда | Любые записи сопоставления блочных устройств для инстанса. | ||||
| device_name string | всегда | Имя устройства, доступное для инстанса (например, /dev/sdh или xvdh). Пример: /dev/sdh | ||||
| ebs complex | всегда | Параметры, используемые для автоматической настройки томов EBS при запуске инстанса. | ||||
| attach_time string | всегда | Отметка времени, когда началось подключение. Пример: 2017-03-23T22:51:24+00:00 | ||||
| delete_on_termination boolean | всегда | Указывает, будет ли том удален при завершении работы инстанса. Пример: True | ||||
| status string | всегда | Состояние подключения. Пример: attached | ||||
| volume_id string | всегда | Идентификатор тома EBS Пример: vol-12345678 | ||||
| client_token string | всегда | Маркер идемпотентности, который вы предоставили при запуске инстанса, если применимо. Пример: mytoken | ||||
| ebs_optimized boolean | всегда | Указывает, оптимизирован ли инстанс для ввода-вывода EBS. | ||||
| hypervisor string | всегда | Тип гипервизора инстанса. Пример: xen | ||||
| iam_instance_profile complex | всегда | Профиль IAM инстанса, связанный с инстансом, если применимо. | ||||
| arn string | всегда | Amazon Resource Name (ARN) профиля инстанса. Пример: arn:aws:iam::000012345678:instance-profile/myprofile | ||||
| id string | всегда | Идентификатор профиля инстанса Пример: JFJ397FDG400FG9FD1N | ||||
| image_id string | всегда | Идентификатор AMI, используемого для запуска инстанса. Пример: ami-0011223344 | ||||
| instance_id string | всегда | Идентификатор инстанса. Пример: i-012345678 | ||||
| instance_type string | всегда | Размер типа инстанса работающего инстанса. Пример: t2.micro | ||||
| key_name string | всегда | Имя пары ключей, если этот инстанс был запущен с связанной парой ключей. Пример: my-key | ||||
| launch_time string | всегда | Время запуска инстанса. Пример: 2017-03-23T22:51:24+00:00 | ||||
| monitoring complex | всегда | Мониторинг инстанса. | ||||
| state string | всегда | Указывает, включен ли подробный мониторинг. В противном случае включен базовый мониторинг. Пример: disabled | ||||
| network.source_dest_check boolean | всегда | Указывает, включена ли проверка источника/назначения. Пример: True | ||||
| network_interfaces complex | всегда | Один или несколько сетевых интерфейсов для инстанса. | ||||
| association complex | всегда | Информация об ассоциации с Elastic IPv4, связанным с сетевым интерфейсом. | ||||
| ip_owner_id string | всегда | Идентификатор владельца адреса Elastic IP. Пример: amazon | ||||
| public_dns_name string | всегда | Общедоступное имя DNS. | ||||
| public_ip string | всегда | Общедоступный IP-адрес или адрес Elastic IP, привязанный к сетевому интерфейсу. Пример: 1.2.3.4 | ||||
| соединение сложный | всегда | Присоединение сетевого интерфейса. | ||||
| время_присоединения строка | всегда | Отметка времени начала соединения. Пример: 2017-03-23T22:51:24+00:00 | ||||
| идентификатор_соединения строка | всегда | Идентификатор соединения сетевого интерфейса. Пример: eni-attach-3aff3f | ||||
| удалять_при_завершении булево | всегда | Указывает, будет ли удален сетевой интерфейс при завершении экземпляра. Пример: True | ||||
| индекс_устройства целое | всегда | Индекс устройства в экземпляре для соединения сетевого интерфейса. | ||||
| статус строка | всегда | Состояние соединения. Пример: подключено | ||||
| описание строка | всегда | Описание. Пример: Мой интерфейс | ||||
| группы список сложных | всегда | Одна или несколько групп безопасности. | ||||
| идентификатор_группы строка | всегда | Идентификатор группы безопасности. Пример: sg-abcdef12 | ||||
| название_группы строка | всегда | Название группы безопасности. Пример: mygroup | ||||
| ipv6_адреса сложный | всегда | Один или несколько адресов IPv6, связанных с сетевым интерфейсом. | ||||
| ipv6_адрес строка | всегда | Адрес IPv6. Пример: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 | ||||
| mac_адрес строка | всегда | MAC-адрес. Пример: 00:11:22:33:44:55 | ||||
| идентификатор_сетевого_интерфейса строка | всегда | Идентификатор сетевого интерфейса. Пример: eni-01234567 | ||||
| идентификатор_владельца строка | всегда | Идентификатор AWS учетной записи владельца сетевого интерфейса. Пример: 01234567890 | ||||
| приватный_ip_адрес строка | всегда | IPv4-адрес сетевого интерфейса в подсети. Пример: 10.0.0.1 | ||||
| приватные_ip_адреса список сложных | всегда | Приватные IPv4-адреса, связанные с сетевым интерфейсом. | ||||
| ассоциация сложный | всегда | Информация об ассоциации с адресом Elastic IP (IPv4), связанным с сетевым интерфейсом. | ||||
| идентификатор_владельца_ip строка | всегда | Идентификатор владельца адреса Elastic IP. Пример: amazon | ||||
| общедоступное_имя_dns строка | всегда | Общедоступное имя DNS. | ||||
| общедоступный_ip строка | всегда | Общедоступный IP-адрес или адрес Elastic IP, привязанный к сетевому интерфейсу. Пример: 1.2.3.4 | ||||
| первичный булево | всегда | Указывает, является ли этот IPv4-адрес основным приватным IP-адресом сетевого интерфейса. Пример: True | ||||
| приватный_ip_адрес строка | всегда | Приватный IPv4-адрес сетевого интерфейса. Пример: 10.0.0.1 | ||||
| проверка_источника_назначения булево | всегда | Указывает, включена ли проверка источника/назначения. Пример: True | ||||
| статус строка | всегда | Статус сетевого интерфейса. Пример: в_использовании | ||||
| идентификатор_подсети строка | всегда | Идентификатор подсети для сетевого интерфейса. Пример: 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 строка | всегда | Идентификатор группы безопасности. Пример: sg-0123456 | ||||
| group_name строка | всегда | Название группы безопасности. Пример: my-security-group | ||||
| state сложная | всегда | Текущее состояние экземпляра. | ||||
| code целое число | всегда | Нижний байт представляет состояние. Пример: 16 | ||||
| name строка | всегда | Название состояния. Пример: running | ||||
| state_transition_reason строка | всегда | Причина последнего перехода состояния. | ||||
| subnet_id строка | всегда | Идентификатор подсети, в которой работает экземпляр. Пример: subnet-00abcdef | ||||
| tags словарь | всегда | Любые теги, назначенные экземпляру. | ||||
| virtualization_type строка | всегда | Тип виртуализации AMI. Пример: hvm | ||||
| vpc_id словарь | всегда | Идентификатор VPC, в котором находится экземпляр. Пример: vpc-0011223344 | ||||
Статус
- Данный модуль не гарантирует обратную совместимость интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [сообщество]
Авторы
- 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.9/modules/ec2_instance_module.html