community.general.ali_instance – Создание, запуск, остановка, перезапуск или завершение экземпляра в ECS. Добавление или удаление экземпляра в/из группы безопасности.
Примечание
Этот плагин входит в коллекцию community.general (версия 2.0.1).
Для его установки используйте: 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. Имя сеанса, используемое при принятии роли. Если опущено, в вызов AssumeRole передается «ansible» в качестве имени сеанса. Поддерживает переменную окружения 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 просто обращается к метаданным http://100.100.100.200/latest/meta-data/ram/security-credentials/<ecs_role_name> для получения учетных данных STS. Это предпочтительный подход по сравнению с любым другим при работе в 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 строка | всегда | Состояние подключения. Пример: в_использовании | ||
| volume_id строка | всегда | Идентификатор облачного диска. Пример: d-2zei53pjsi117y6gf9t6 | ||
| cpu целое число | всегда | Количество ядер процессора экземпляра. Пример: 4 | ||
| creation_time строка | всегда | Время создания экземпляра. Пример: 2018-06-25T04:08Z | ||
| description строка | всегда | Описание экземпляра. Пример: мой экземпляр ansible | ||
| 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 I/O. | ||
| 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–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/general/ali_instance_module.html