community.general.ali_instance – Создание, запуск, остановка, перезапуск или завершение экземпляра в ECS. Добавление или удаление экземпляра в/из группы безопасности.
Примечание
Этот плагин входит в сборку community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Чтобы использовать его в книге задач, укажите: community.general.ali_instance.
Обзор
- Создание, запуск, остановка, перезапуск, изменение или завершение экземпляров ECS.
- Добавление или удаление экземпляров ECS в/из группы безопасности.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- footmark >= 1.19.0
- python >= 3.6
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| alicloud_access_key строка | Ключ доступа к Alibaba Cloud. Если не задан, будет использовано значение переменной окружения ALICLOUD_ACCESS_KEY, ALICLOUD_ACCESS_KEY_ID. Псевдонимы: access_key_id, access_key | |
| alicloud_assume_role словарь | Если указан ARN роли, Ansible попытается принять на себя эту роль, используя предоставленные учетные данные. Вложенный блок assume_role поддерживает alicloud_assume_role_arn, alicloud_assume_role_session_name, alicloud_assume_role_session_expiration и alicloud_assume_role_policy
Псевдонимы: assume_role | |
| alicloud_assume_role_arn строка | ARN роли Alibaba Cloud. ARN роли, которую необходимо принять на себя. Если ARN установлена в пустую строку, переключение роли не выполняется. Поддерживает переменную окружения ALICLOUD_ASSUME_ROLE_ARN. ansible будет выполняться с предоставленными учетными данными. Псевдонимы: assume_role_arn | |
| alicloud_assume_role_session_expiration целое число | Срок действия сеанса Alibaba Cloud. Время, по истечении которого созданный сеанс для принятия роли истекает. Допустимый диапазон значений 900-3600 секунд. По умолчанию 3600 (в этом случае Alicloud использует собственное значение по умолчанию). Поддерживает переменную окружения ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION Псевдонимы: assume_role_session_expiration | |
| alicloud_assume_role_session_name строка | Имя сеанса Alibaba Cloud. Имя сеанса, используемого при принятии роли. Если опущено, 'ansible' передается в вызов AssumeRole в качестве имени сеанса. Поддерживает переменную окружения ALICLOUD_ASSUME_ROLE_SESSION_NAME Псевдонимы: assume_role_session_name | |
| alicloud_region строка / обязательно | Регион Alibaba Cloud для использования. Если не указан, используется значение переменной окружения ALICLOUD_REGION, ALICLOUD_REGION_ID. Псевдонимы: region, region_id | |
| alicloud_secret_key строка | Секретный ключ Alibaba Cloud. Если не задан, будет использовано значение переменной окружения ALICLOUD_SECRET_KEY, ALICLOUD_SECRET_ACCESS_KEY. Псевдонимы: secret_access_key, secret_key | |
| alicloud_security_token строка | Токен безопасности Alibaba Cloud. Если не указан, используется значение переменной окружения ALICLOUD_SECURITY_TOKEN. Псевдонимы: security_token | |
| allocate_public_ip логическое значение |
| Выделить публичный IP-адрес для нового экземпляра. Псевдонимы: assign_public_ip |
| auto_renew логическое значение |
| Автоматически продлевать оплату за экземпляр. |
| auto_renew_period целое число |
| Срок действия автоматического продления оплаты за экземпляр. Требуется, когда auto_renew=True. |
| availability_zone строка | Идентификатор зоны доступности Aliyun, в которой необходимо запустить экземпляр. Если не указан, будет назначен автоматически. Псевдонимы: alicloud_zone, zone_id | |
| count целое число | По умолчанию: 1 | Количество новых экземпляров. Целочисленное значение, указывающее, сколько экземпляров, соответствующих тегу count_tag, должно быть запущено. Экземпляры создаются или удаляются в соответствии с этим значением. |
| count_tag строка |
count определяет количество экземпляров на основе определенного критерия тега. Это можно выразить несколькими способами, что показано в разделе ПРИМЕРЫ. Указанный тег count_tag должен уже существовать или быть передан в качестве параметра tags. Если не указан, он будет заменен на instance_name. | |
| description строка | Описание экземпляра ECS, которое представляет собой строку от 2 до 256 символов. Не должно начинаться с http:// или https://. | |
| dry_run логическое значение добавлен в 0.2.0 community.general |
| Указывает, следует ли отправлять запрос в режиме осушения. Если dry_run=True, отправляется только запрос в режиме осушения, и экземпляры не создаются. Система проверяет, установлены ли необходимые параметры, и проверяет формат запроса, разрешения на использование службы и доступные экземпляры ECS. При сбое проверки возвращается соответствующий код ошибки. При успешной проверке возвращается код ошибки DryRunOperation. Если dry_run=False, отправляется запрос. При успешной проверке экземпляр создается. |
| ecs_role_name строка | Имя роли RAM, прикрепленной к экземпляру ECS для операций API. Его можно получить в разделе «Управление доступом» консоли Alibaba Cloud. Если Ansible выполняется с экземпляра ECS с ролью RAM Instance, Ansible получит учетные данные STS из метаданных http://100.100.100.200/latest/meta-data/ram/security-credentials/<ecs_role_name>. Это предпочтительный подход при работе с ECS, так как вы избегаете жесткого кодирования учетных данных. Вместо этого Ansible динамически их получает, что уменьшает вероятность утечки. Псевдонимы: role_name | |
| force логическое значение |
| Выполнять ли текущую операцию принудительно. |
| host_name строка | Имя хоста экземпляра. Не поддерживаются упорядоченные имена хостов. | |
| image_id строка | Идентификатор образа, используемый для запуска экземпляров. Требуется, когда state=present, и при создании новых экземпляров ECS.Псевдонимы: image | |
| include_data_disks логическое значение добавлен в 0.2.0 community.general |
| Включить изменение типа оплаты за диски экземпляра при изменении типа оплаты экземпляра. |
| instance_charge_type строка |
| Тип оплаты за экземпляр. |
| instance_ids список / элементы=строка | Список идентификаторов экземпляров. Требуется при необходимости работы с существующими экземплярами. Если он указан, count утрачивает свою эффективность. | |
| instance_name строка | Имя экземпляра ECS, которое представляет собой строку от 2 до 128 китайских или английских символов. Должно начинаться с прописной или строчной буквы или китайского символа и может содержать цифры, ".", "_", или "-". Не должно начинаться с http:// или https://. Псевдонимы: name | |
| instance_type строка | Тип экземпляра, используемый для запуска экземпляров. Требуется, когда state=present, и при создании новых экземпляров ECS.Псевдонимы: type | |
| internet_charge_type строка |
| Тип оплаты за интернет-трафик экземпляра ECS. |
| key_name строка | Имя пары ключей, используемой для доступа к экземпляру ECS через SSH. Псевдонимы: keypair | |
| max_bandwidth_in целое число | По умолчанию: 200 | Максимальная входная пропускная способность из публичной сети, измеряемая в Мбит/с (мегабит в секунду). |
| max_bandwidth_out целое число | По умолчанию: 0 | Максимальная выходная пропускная способность в публичную сеть, измеряемая в Мбит/с (мегабит в секунду). Требуется, когда allocate_public_ip=True. Игнорируется, когда allocate_public_ip=False. |
| password строка | Пароль для входа в экземпляр. После перезагрузки экземпляра измененный пароль вступит в силу. | |
| period целое число | По умолчанию: 1 | Срок оплаты за экземпляр в месяцах. Требуется, когда instance_charge_type=PrePaid. Допустимые значения: [1-9, 12, 24, 36]. |
| period_unit строка добавлен в 0.2.0 community.general |
| Единица измерения срока, за который вы покупаете ресурс. Действительно, когда instance_charge_type=PrePaid.
|
| profile строка | Имя профиля Alicloud, заданное в файле общих учетных данных. Также может быть получено из переменной окружения ALICLOUD_PROFILE. | |
| purge_tags логическое значение добавлен в 0.2.0 community.general |
| Удалить теги, не указанные в задании, которые находятся на экземпляре. Если True, это означает, что необходимо указывать все желаемые теги в каждом задании, влияющем на экземпляр. |
| ram_role_name строка добавлен в 0.2.0 community.general | Имя роли RAM экземпляра. |
| security_groups list / elements=string | Список идентификаторов групп безопасности. псевдонимы: group_ids | |
| shared_credentials_file string | Путь к файлу общих учетных данных. Также можно указать переменную среды ALICLOUD_SHARED_CREDENTIALS_FILE. Если этот параметр не задан и указан профиль, будет использоваться ~/.aliyun/config.json. | |
| spot_price_limit float добавлено в 0.2.0 community.general | Максимальная почасовая цена для прерывимого экземпляра. Этот параметр поддерживает максимум три десятичных знака и применяется при установке параметра SpotStrategy в SpotWithPriceLimit. | |
| spot_strategy string добавлено в 0.2.0 community.general |
| Режим торгов по принципу оплаты по факту использования для экземпляра. Этот параметр допустим, когда параметр InstanceChargeType установлен в PostPaid. |
| state string |
| Состояние экземпляра после выполнения операции. |
| system_disk_category string |
| Категория системного диска. |
| system_disk_description string | Описание системного диска. | |
| system_disk_name string | Имя системного диска. | |
| system_disk_size integer | По умолчанию: 40 | Размер системного диска в ГБ. Допустимые значения: от 40 до 500. |
| tags dictionary добавлено в 0.2.0 community.general | Словарь тегов экземпляра, для добавления к новому экземпляру или для запуска/остановки экземпляра по тегу. {"key":"value"}
псевдонимы: instance_tags | |
| unique_suffix boolean добавлено в 0.2.0 community.general |
| Указывает, добавлять ли последовательные суффиксы к имени хоста. Последовательные суффиксы варьируются от 001 до 999. |
| user_data string | Пользовательские данные для настройки начального поведения экземпляра ECS и передачи данных в экземпляр ECS. Действует только при запуске новых экземпляров ECS. | |
| vswitch_id string | Идентификатор подсети для запуска экземпляров (VPC). псевдонимы: subnet_id |
Примечания
Примечание
- Если параметры не заданы в модуле, можно использовать следующие переменные среды в порядке убывания приоритета
ALICLOUD_ACCESS_KEYилиALICLOUD_ACCESS_KEY_ID,ALICLOUD_SECRET_KEYилиALICLOUD_SECRET_ACCESS_KEY,ALICLOUD_REGIONилиALICLOUD_REGION_ID,ALICLOUD_SECURITY_TOKEN,ALICLOUD_ECS_ROLE_NAME,ALICLOUD_SHARED_CREDENTIALS_FILE,ALICLOUD_PROFILE,ALICLOUD_ASSUME_ROLE_ARN,ALICLOUD_ASSUME_ROLE_SESSION_NAME,ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION, -
ALICLOUD_REGIONилиALICLOUD_REGION_IDобычно используются для указания региона ALICLOUD, когда это необходимо, но их также можно настроить в файле конфигурации footmark
Примеры
# basic provisioning example vpc network
- name: Basic provisioning example
hosts: localhost
vars:
alicloud_access_key: <your-alicloud-access-key-id>
alicloud_secret_key: <your-alicloud-access-secret-key>
alicloud_region: cn-beijing
image: ubuntu1404_64_40G_cloudinit_20160727.raw
instance_type: ecs.n4.small
vswitch_id: vsw-abcd1234
assign_public_ip: True
max_bandwidth_out: 10
host_name: myhost
password: mypassword
system_disk_category: cloud_efficiency
system_disk_size: 100
internet_charge_type: PayByBandwidth
security_groups: ["sg-f2rwnfh23r"]
instance_ids: ["i-abcd12346", "i-abcd12345"]
force: True
tasks:
- name: Launch ECS instance in VPC network
community.general.ali_instance:
alicloud_access_key: '{{ alicloud_access_key }}'
alicloud_secret_key: '{{ alicloud_secret_key }}'
alicloud_region: '{{ alicloud_region }}'
image: '{{ image }}'
system_disk_category: '{{ system_disk_category }}'
system_disk_size: '{{ system_disk_size }}'
instance_type: '{{ instance_type }}'
vswitch_id: '{{ vswitch_id }}'
assign_public_ip: '{{ assign_public_ip }}'
internet_charge_type: '{{ internet_charge_type }}'
max_bandwidth_out: '{{ max_bandwidth_out }}'
tags:
Name: created_one
host_name: '{{ host_name }}'
password: '{{ password }}'
- name: With count and count_tag to create a number of instances
community.general.ali_instance:
alicloud_access_key: '{{ alicloud_access_key }}'
alicloud_secret_key: '{{ alicloud_secret_key }}'
alicloud_region: '{{ alicloud_region }}'
image: '{{ image }}'
system_disk_category: '{{ system_disk_category }}'
system_disk_size: '{{ system_disk_size }}'
instance_type: '{{ instance_type }}'
assign_public_ip: '{{ assign_public_ip }}'
security_groups: '{{ security_groups }}'
internet_charge_type: '{{ internet_charge_type }}'
max_bandwidth_out: '{{ max_bandwidth_out }}'
tags:
Name: created_one
Version: 0.1
count: 2
count_tag:
Name: created_one
host_name: '{{ host_name }}'
password: '{{ password }}'
- name: Start instance
community.general.ali_instance:
alicloud_access_key: '{{ alicloud_access_key }}'
alicloud_secret_key: '{{ alicloud_secret_key }}'
alicloud_region: '{{ alicloud_region }}'
instance_ids: '{{ instance_ids }}'
state: 'running'
- name: Reboot instance forcibly
ecs:
alicloud_access_key: '{{ alicloud_access_key }}'
alicloud_secret_key: '{{ alicloud_secret_key }}'
alicloud_region: '{{ alicloud_region }}'
instance_ids: '{{ instance_ids }}'
state: 'restarted'
force: '{{ force }}'
- name: Add instances to an security group
ecs:
alicloud_access_key: '{{ alicloud_access_key }}'
alicloud_secret_key: '{{ alicloud_secret_key }}'
alicloud_region: '{{ alicloud_region }}'
instance_ids: '{{ instance_ids }}'
security_groups: '{{ security_groups }}'
Значения возврата
Общие значения возврата описаны здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание | ||
|---|---|---|---|---|
| ids список / элементы=строка | всегда | Список идентификаторов экземпляров ECS Пример: ['i-12345er', 'i-3245fs'] | ||
| instances сложный тип | всегда | Список экземпляров ECS | ||
| availability_zone строка | всегда | Зона доступности, в которой находится экземпляр. Пример: cn-beijing-a | ||
| block_device_mappings сложный тип | всегда | Любые записи отображения блочных устройств для экземпляра. | ||
| attach_time строка | всегда | Отметка времени, когда началось подключение. Пример: 2018-06-25T04:08:26Z | ||
| delete_on_termination булево | всегда | Указывает, будет ли том удален при завершении работы экземпляра. Пример: True | ||
| device_name строка | всегда | Имя устройства, доступное для экземпляра (например, /dev/xvda). Пример: /dev/xvda | ||
| status строка | всегда | Состояние подключения. Пример: in_use | ||
| volume_id строка | всегда | Идентификатор облачного диска. Пример: d-2zei53pjsi117y6gf9t6 | ||
| cpu целое число | всегда | Количество ядер процессора экземпляра. Пример: 4 | ||
| creation_time строка | всегда | Время создания экземпляра. Пример: 2018-06-25T04:08Z | ||
| description строка | всегда | Описание экземпляра. Пример: my ansible instance | ||
| eip сложный тип | всегда | Атрибуты EIP, связанных с экземпляром. | ||
| allocation_id строка | всегда | Идентификатор EIP. Пример: eip-12345 | ||
| internet_charge_type строка | всегда | Тип оплаты интернета EIP. Пример: paybybandwidth | ||
| ip_address строка | всегда | Адрес EIP. Пример: 42.10.2.2 | ||
| expired_time строка | всегда | Время истечения срока действия экземпляра. Пример: 2099-12-31T15:59Z | ||
| gpu сложный тип | всегда | Атрибуты GPU экземпляра. | ||
| amount целое число | всегда | Количество GPU. | ||
| spec строка | всегда | Спецификация GPU. | ||
| host_name строка | всегда | Имя хоста экземпляра. Пример: iZ2zewaoZ | ||
| id строка | всегда | Псевдоним instance_id. Пример: i-abc12345 | ||
| image_id строка | всегда | Идентификатор образа, используемого для запуска экземпляра. Пример: m-0011223344 | ||
| inner_ip_address строка | всегда | Внутренний IPv4-адрес классического экземпляра. Пример: 10.0.0.2 | ||
| instance_charge_type строка | всегда | Тип оплаты экземпляра. Пример: PostPaid | ||
| instance_id строка | всегда | Идентификатор ресурса экземпляра ECS. Пример: i-abc12345 | ||
| instance_name строка | всегда | Имя экземпляра. Пример: my-ecs | ||
| instance_type строка | всегда | Тип экземпляра. Пример: ecs.sn1ne.xlarge | ||
| instance_type_family строка | всегда | Семейство типов экземпляров, к которому относится экземпляр. Пример: ecs.sn1ne | ||
| internet_charge_type строка | всегда | Способ оплаты сетевой пропускной способности. Пример: PayByBandwidth | ||
| internet_max_bandwidth_in целое число | всегда | Максимальная входящая пропускная способность из интернета. Пример: 200 | ||
| internet_max_bandwidth_out целое число | всегда | Максимальная исходящая пропускная способность в интернет. Пример: 20 | ||
| io_optimized булево | всегда | Указывает, оптимизирован ли экземпляр для ввода-вывода EBS. | ||
| memory целое число | всегда | Объем памяти экземпляра. Пример: 8192 | ||
| network_interfaces сложный тип | всегда | Один или несколько сетевых интерфейсов для экземпляра. | ||
| mac_address строка | всегда | MAC-адрес. Пример: 00:11:22:33:44:55 | ||
| network_interface_id строка | всегда | Идентификатор сетевого интерфейса. Пример: eni-01234567 | ||
| primary_ip_address строка | всегда | Основной IPv4-адрес сетевого интерфейса внутри vswitch. Пример: 10.0.0.1 | ||
| osname строка | всегда | Имя операционной системы экземпляра. Пример: CentOS | ||
| ostype строка | всегда | Тип операционной системы экземпляра. Пример: linux | ||
| private_ip_address строка | всегда | IPv4-адрес сетевого интерфейса внутри подсети. Пример: 10.0.0.1 | ||
| public_ip_address строка | всегда | Публичный IPv4-адрес, назначенный экземпляру или адресу EIP. Пример: 43.0.0.1 | ||
| resource_group_id строка | всегда | Идентификатор группы ресурсов, к которой принадлежит экземпляр. Пример: my-ecs-group | ||
| security_groups список / элементы=словарь | всегда | Один или несколько наборов правил безопасности для экземпляра. | ||
| group_id строка | всегда | Идентификатор набора правил безопасности. Пример: sg-0123456 | ||
| group_name string | always | Имя группы безопасности. Пример: my-security-group | ||
| spot_price_limit float | always | Максимальная почасовая цена для преемственной инстанции. Пример: 0.97 | ||
| spot_strategy string | always | Режим торгов для инстанции платы по факту использования. Пример: NoSpot | ||
| status string | always | Текущий статус инстанции. Пример: running | ||
| tags dictionary | always | Присвоенные теги для инстанции. | ||
| user_data dictionary | always | Данные, определённые пользователем. | ||
| vpc_id string | always | Идентификатор VPC, в котором находится инстанция. Пример: vpc-0011223344 | ||
| vswitch_id string | always | Идентификатор vswitch, в котором работает инстанция. Пример: vsw-dew00abcdef | ||
Авторы
- He Guimin (@xiaozhu36)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/ali_instance_module.html