ec2_instance — Создание и управление экземплярами EC2
Новая версия с 2.5.
Описание
- Сбор данных об экземплярах ec2 в AWS
Требования
Ниже приведены требования к хосту, на котором выполняется этот модуль.
- 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 для включения покупки дополнительных кредитов ЦП. | |
| detailed_monitoring | Разрешить сбор подробных метрик cloudwatch, что позволит получить более детальные оповещения. | ||
| ebs_optimized | Использовать ли оптимизированные EBS-тома, см. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html
| ||
| ec2_url | Адрес для подключения к EC2 или облаку Eucalyptus (по умолчанию модуль использует конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех остальных модулей, если регион не используется. Если не задан, используется значение переменной среды EC2_URL, если таковая имеется. | ||
| filters | По умолчанию: {"subnet-id": "\u003cprovided-or-default subnet\u003e", "tag:Name": "\u003cprovided-Name-attribute\u003e"} | Словарь фильтров для применения при определении, соответствуют ли существующие экземпляры заданным условиям и требуют ли изменения. Каждый элемент словаря состоит из ключа фильтра и значения фильтра. См. http://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 переопределяет значение ramdisk по умолчанию для 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" | Тип экземпляра для использования, см. http://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 (bool), private_ip_address (str), ipv6_addresses (list), source_dest_check (bool), description (str), delete_on_termination (bool), device_index (int), groups (список идентификаторов групп безопасности), private_ip_addresses (list), subnet_id (str).
network.interfaces должен быть списком ID ENI (строки) или списком объектов, содержащих ключ id. Используйте ec2_eni для создания ENI со специальными настройками. | ||
| profile (добавлено в 1.6) | Использует профиль boto. Работает только с boto >= 2.24.0. | ||
| purge_tags | По умолчанию: "no" | Удалить теги, которые не указаны в задаче и присутствуют на экземпляре. Это означает, что вы должны указывать все требуемые теги в каждой задаче, влияющей на экземпляр. | |
| region | AWS регион для использования. Если не указан, используется значение переменной среды AWS_REGION или EC2_REGION, если таковая имеется. См. http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region
Псевдонимы: aws_region, ec2_region | ||
| security_group | ID или имя группы безопасности. Взаимоисключающее с security_groups. | ||
| security_groups | Список ID или имён групп безопасности (строки). Взаимоисключающее с security_group. | ||
| security_token (добавлено в 1.6) | Токен безопасности AWS STS. Если не задан, используется значение переменной среды AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN. Псевдонимы: access_token | ||
| state |
| Целевое состояние экземпляров | |
| tags | Хэш/словарь тегов для добавления к новому экземпляру или для добавления/удаления из существующего. | ||
| tenancy |
| Тип аренды для использования экземпляром. По умолчанию — shared tenancy. Dedicated tenancy влечёт дополнительные расходы. | |
| termination_protection | Включить ли защиту от удаления. Этот модуль не удалит экземпляр с активной защитой от удаления, её необходимо отключить предварительно. | ||
| tower_callback | Предварительно настроенные пользовательские данные для выполнения обратного вызова Tower (только Linux). Взаимоисключающее с user_data. Для экземпляров Windows для включения удалённого доступа через Ansible установите tower_callback.windows в true, и необязательно установите пароль администратора. Если использовать 'windows' и 'set_password', обратный вызов в Tower не будет выполнен, но экземпляр будет готов принимать winrm-соединения из Ansible. | ||
| tower_address | IP-адрес или имя DNS сервера Tower. Должен быть доступен по этому адресу из VPC, в котором будет запущен этот экземпляр. | ||
| job_template_id | Целочисленный ID шаблона задания Tower или имя (имя поддерживается только для Tower 3.2+) | ||
| host_config_key | Ключ конфигурации хоста, сгенерированный шаблоном задания Tower. | ||
| user_data | Неструктурированные данные, доступные экземпляру ec2 | ||
| validate_certs bool (добавлено в 1.5) |
| При значении "no", SSL сертификаты не будут проверены для boto версий >= 2.6.0. | |
| volumes | Список сопоставлений блочных устройств, по умолчанию всегда используется корневое устройство AMI, поэтому опция volumes предназначена в основном для добавления дополнительного хранилища. Сопоставление содержит (необязательные) ключи device_name, virtual_name, ebs.device_type, ebs.device_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 | Идентификатор подсети, в которой необходимо запустить экземпляр (VPC). Если не указан, ec2_instance выберет зону по умолчанию для VPC по умолчанию псевдонимы: subnet_id | ||
| wait | По умолчанию: "yes" | Ожидать или нет желаемого состояния (используйте 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), если учетные данные не указаны. См. http://boto.readthedocs.org/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 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"
Значения возврата
Общие значения возврата описаны здесь, следующие являются полями, уникальными для данного модуля:
| Ключ | Возвращаемое значение | Описание | ||||
|---|---|---|---|---|---|---|
| экземпляры сложный | всегда | список экземпляров ec2 | ||||
| ami_launch_index int | всегда | Индекс запуска AMI, который можно использовать для поиска этого экземпляра в группе запуска. | ||||
| архитектура строка | всегда | Архитектура образа Пример: x86_64 | ||||
| block_device_mappings сложный | всегда | Любые записи отображения блочных устройств для экземпляра. | ||||
| device_name строка | всегда | Имя устройства, доступное экземпляру (например, /dev/sdh или xvdh). Пример: /dev/sdh | ||||
| ebs сложный | всегда | Параметры, используемые для автоматической настройки томов EBS при запуске экземпляра. | ||||
| attach_time строка | всегда | Отметка времени, когда началось подключение. Пример: 2017-03-23T22:51:24+00:00 | ||||
| delete_on_termination булево | всегда | Указывает, удаляется ли том при завершении работы экземпляра. Пример: True | ||||
| status строка | всегда | Состояние подключения. Пример: подключено | ||||
| volume_id строка | всегда | Идентификатор тома EBS Пример: vol-12345678 | ||||
| client_token строка | всегда | Маркер идемпотентности, предоставленный вами при запуске экземпляра, если применимо. Пример: mytoken | ||||
| ebs_optimized булево | всегда | Указывает, оптимизирован ли экземпляр для ввода-вывода EBS. | ||||
| hypervisor строка | всегда | Тип гипервизора экземпляра. Пример: xen | ||||
| iam_instance_profile сложный | всегда | Профиль экземпляра IAM, связанный с экземпляром, если применимо. | ||||
| arn строка | всегда | Amazon Resource Name (ARN) профиля экземпляра. Пример: arn:aws:iam::000012345678:instance-profile/myprofile | ||||
| id строка | всегда | Идентификатор профиля экземпляра Пример: JFJ397FDG400FG9FD1N | ||||
| image_id строка | всегда | Идентификатор AMI, используемого для запуска экземпляра. Пример: ami-0011223344 | ||||
| instance_id строка | всегда | Идентификатор экземпляра. Пример: i-012345678 | ||||
| instance_type строка | всегда | Размер типа экземпляра работающего экземпляра. Пример: t2.micro | ||||
| key_name строка | всегда | Имя пары ключей, если этот экземпляр был запущен с связанной парой ключей. Пример: my-key | ||||
| launch_time строка | всегда | Время запуска экземпляра. Пример: 2017-03-23T22:51:24+00:00 | ||||
| monitoring сложный | всегда | Мониторинг экземпляра. | ||||
| state строка | всегда | Указывает, включен ли подробный мониторинг. В противном случае включен базовый мониторинг. Пример: выключен | ||||
| network_interfaces сложный | всегда | Один или несколько сетевых интерфейсов для экземпляра. | ||||
| association сложный | всегда | Информация об ассоциации с Elastic IPv4, связанной с сетевым интерфейсом. | ||||
| ip_owner_id строка | всегда | Идентификатор владельца адреса Elastic IP. Пример: amazon | ||||
| public_dns_name строка | всегда | Общедоступное имя DNS. | ||||
| public_ip строка | всегда | Общедоступный IP-адрес или адрес Elastic IP, привязанный к сетевому интерфейсу. Пример: 1.2.3.4 | ||||
| attachment сложный | всегда | Подключение сетевого интерфейса. | ||||
| attach_time строка | всегда | Отметка времени, когда началось подключение. Пример: 2017-03-23T22:51:24+00:00 | ||||
| attachment_id строка | всегда | Идентификатор подключения сетевого интерфейса. Пример: eni-attach-3aff3f | ||||
| delete_on_termination bool | always | Указывает, удаляется ли сетевой интерфейс при завершении работы экземпляра. Пример: True | ||||
| device_index int | always | Индекс устройства на экземпляре для подключения сетевого интерфейса. | ||||
| status string | always | Состояние подключения. Пример: attached | ||||
| description string | always | Описание. Пример: Мой интерфейс | ||||
| groups complex | always | Одна или несколько групп безопасности. | ||||
| group_id string | always | Идентификатор группы безопасности. Пример: sg-abcdef12 | ||||
| group_name string | always | Имя группы безопасности. Пример: mygroup | ||||
| ipv6_addresses complex | always | Один или несколько адресов IPv6, связанных с сетевым интерфейсом. | ||||
| ipv6_address string | always | Адрес IPv6. Пример: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 | ||||
| mac_address string | always | MAC-адрес. Пример: 00:11:22:33:44:55 | ||||
| network_interface_id string | always | Идентификатор сетевого интерфейса. Пример: eni-01234567 | ||||
| owner_id string | always | Идентификатор AWS учетной записи владельца сетевого интерфейса. Пример: 01234567890 | ||||
| private_ip_address string | always | IPv4-адрес сетевого интерфейса в подсети. Пример: 10.0.0.1 | ||||
| private_ip_addresses complex | always | Частные IPv4-адреса, связанные с сетевым интерфейсом. | ||||
| association complex | always | Информация об ассоциации для адреса Elastic IP (IPv4), связанного с сетевым интерфейсом. | ||||
| ip_owner_id string | always | Идентификатор владельца адреса Elastic IP. Пример: amazon | ||||
| public_dns_name string | always | Общедоступное доменное имя. | ||||
| public_ip string | always | Общедоступный IP-адрес или адрес Elastic IP, привязанный к сетевому интерфейсу. Пример: 1.2.3.4 | ||||
| primary bool | always | Указывает, является ли этот IPv4-адрес основным частным IP-адресом сетевого интерфейса. Пример: True | ||||
| private_ip_address string | always | Частный IPv4-адрес сетевого интерфейса. Пример: 10.0.0.1 | ||||
| source_dest_check bool | always | Указывает, включена ли проверка источника/назначения. Пример: True | ||||
| status string | always | Состояние сетевого интерфейса. Пример: в использовании | ||||
| subnet_id string | always | Идентификатор подсети для сетевого интерфейса. Пример: subnet-0123456 | ||||
| vpc_id string | always | Идентификатор VPC для сетевого интерфейса. Пример: vpc-0123456 | ||||
| placement complex | always | Расположение, где запущен экземпляр, если применимо. | ||||
| availability_zone string | always | Доступная зона экземпляра. Пример: ap-southeast-2a | ||||
| group_name string | always | Имя группы размещения, в которой находится экземпляр (для кластерных вычислительных экземпляров). | ||||
| tenancy string | always | Тип принадлежности экземпляра (если экземпляр работает в VPC). Пример: по умолчанию | ||||
| private_dns_name string | always | Приватное имя DNS. Пример: ip-10-0-0-1.ap-southeast-2.compute.internal | ||||
| private_ip_address string | always | IPv4-адрес сетевого интерфейса в подсети. Пример: 10.0.0.1 | ||||
| product_codes complex | always | Один или несколько кодов продукта. | ||||
| product_code_id string | always | Код продукта. Пример: aw0evgkw8ef3n2498gndfgasdfsd5cce | ||||
| product_code_type string | always | Тип кода продукта. Пример: marketplace | ||||
| public_dns_name string | always | Публичное имя DNS, назначенное экземпляру. | ||||
| public_ip_address string | always | Публичный IPv4-адрес, назначенный экземпляру. Пример: 52.0.0.1 | ||||
| root_device_name string | always | Имя устройства корневого устройства. Пример: /dev/sda1 | ||||
| root_device_type string | always | Тип корневого устройства, используемого AMI. Пример: ebs | ||||
| security_groups complex | always | Один или несколько групп безопасности для экземпляра. | ||||
| group_id string | always | Идентификатор группы безопасности. Пример: sg-0123456 | ||||
| network.source_dest_check bool | always | Указывает, включена ли проверка источника/назначения. Пример: True | ||||
| state complex | always | Текущее состояние экземпляра. | ||||
| code int | always | Низкий байт представляет состояние. Пример: 16 | ||||
| name string | always | Имя состояния. Пример: running | ||||
| state_transition_reason string | always | Причина последнего перехода состояния. | ||||
| subnet_id string | always | Идентификатор подсети, в которой работает экземпляр. Пример: subnet-00abcdef | ||||
| tags dict | always | Любые метки, назначенные экземпляру. | ||||
| virtualization_type string | always | Тип виртуализации AMI. Пример: hvm | ||||
| vpc_id dict | always | Идентификатор VPC, в котором находится экземпляр. Пример: vpc-0011223344 | ||||
Состояние
Этот модуль помечен как preview, что означает, что его интерфейс не гарантируется как обратная совместимость.
Техническое обслуживание
Этот модуль помечен как community, что означает, что он поддерживается сообществом Ansible. Подробнее см. Техническое обслуживание и поддержка модулей.
Список других модулей, поддерживаемых сообществом 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.6/modules/ec2_instance_module.html