Модуль community.general.spotinst_aws_elastigroup — Создание, обновление или удаление Spotinst AWS Elastigroups
Примечание
Этот модуль является частью коллекции community.general (версия 9.5.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.general. Для использования этого модуля необходимы дополнительные требования. Подробнее см. Требования.
Для использования в плейбуке укажите: community.general.spotinst_aws_elastigroup.
Описание
- Может создавать, обновлять или удалять группы Spotinst AWS Elastigroups. Конфигурация запуска входит в конфигурацию elastigroup, поэтому для обработки конфигурации запуска не нужны дополнительные модули. Вам необходимо иметь файл с учетными данными по этому пути - <home>/.spotinst/credentials. Файл учетных данных должен содержать строку вида token = <ВАШ ТОКЕН>. Полная документация доступна по адресу https://help.spotinst.com/hc/en-us/articles/115003530285-Ansible.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- spotinst_sdk >= 1.0.38
Параметры
Параметр | Комментарии |
|---|---|
account_id string | Необязательный параметр, позволяющий задать account-id в конфигурации модуля. По умолчанию он извлекается из пути к учетным данным. |
availability_vs_cost string / required | Ориентация стратегии. Доступные варианты: |
availability_zones list / elements=dictionary / required | Список хэшей/словарей зон доступности, которые настроены в elastigroup; ‘[{“key”:”value”, “key”:”value”}]’; разрешенные ключи — name (строка), subnet_id (строка), placement_group_name (строка), |
block_device_mappings list / elements=dictionary | Список хэшей/словарей сопоставлений блочных устройств для экземпляров elastigroup; Вы можете указать виртуальные устройства и тома EBS.; ‘[{“key”:”value”, “key”:”value”}]’; разрешенные ключи — device_name (список строк), virtual_name (строка), no_device (строка), ebs (объект, ожидаются следующие ключи — delete_on_termination(булево), encrypted(булево), iops (целое число), snapshot_id(целое число), volume_type(строка), volume_size(целое число)) |
chef dictionary | Конфигурация интеграции Chef.; Ожидаются следующие ключи — chef_server (строка), organization (строка), user (строка), pem_key (строка), chef_version (строка) |
credentials_path path | Необязательный параметр, позволяющий задать нестандартный путь к учетным данным. По умолчанию: |
do_not_update list / elements=string | TODO document. По умолчанию: |
down_scaling_policies list / elements=dictionary | Список хэшей/словарей политик масштабирования для настройки в elastigroup; ‘[{“key”:”value”, “key”:”value”}]’; разрешенные ключи — policy_name (строка, обязательно), namespace (строка, обязательно), metric_name (строка, обязательно), dimensions ((список объектов), разрешенные ключи — name (строка, обязательно) и value (строка)), statistic (строка, обязательно), evaluation_periods (строка, обязательно), period (строка, обязательно), threshold (строка, обязательно), cooldown (строка, обязательно), unit (строка, обязательно), operator (строка, обязательно), action_type (строка, обязательно), adjustment (строка), max_target_capacity (строка), target (строка), maximum (строка), minimum (строка) |
draining_timeout integer | Время, за которое экземпляр должен быть освобожден от входящих запросов и исключен из ELB перед завершением работы. |
ebs_optimized boolean | Включить оптимизацию EBS для поддерживаемых экземпляров, которые по умолчанию не включены.; Примечание — будут взиматься дополнительные сборы. Варианты:
|
ebs_volume_pool list / elements=dictionary | Список хэшей/словарей устройств EBS для повторного подключения к elastigroup при доступности; ‘[{“key”:”value”, “key”:”value”}]’; разрешенные ключи — volume_ids (список строк), device_name (строка) |
ecs dictionary | Конфигурация интеграции ECS.; Ожидается следующий ключ — cluster_name (строка) |
elastic_beanstalk dictionary | Заполнитель параметра для будущей реализации конфигураций Elastic Beanstalk. |
elastic_ips list / elements=string | Список идентификаторов выделения ElasticIps (пример |
fallback_to_od boolean | В случае отсутствия доступных spot-экземпляров Elastigroup запустит вместо них экземпляр по запросу Варианты:
|
health_check_grace_period integer | Время в секундах после запуска экземпляра, необходимое для начала проверки его работоспособности. Если не указано, по умолчанию используется |
health_check_type string | Сервис для использования в проверке работоспособности. Доступные варианты: |
health_check_unhealthy_duration_before_replacement integer | Минимальное время, в течение которого экземпляр должен быть неработоспособным, чтобы мы могли считать его неработоспособным. |
iam_role_arn string | ARN профиля экземпляра iamRole Используйте либо iam_role_arn, либо iam_role_name |
iam_role_name string | Имя профиля экземпляра iamRole Используйте только iam_role_arn или iam_role_name |
id string | Идентификатор группы, если она уже существует и вы хотите обновить или удалить её. Это не будет работать, если поле uniqueness_by не установлено в id. Когда это установлено, и поле uniqueness_by установлено, группа будет либо обновлена, либо удалена, но не создана. |
image_id string / required | Идентификатор образа, используемый для запуска экземпляра. В случае конфликта между типом экземпляра и типом образа будет возвращена ошибка |
key_pair string | Укажите пару ключей для подключения к экземплярам |
kubernetes dictionary | Конфигурация интеграции Kubernetes. Ожидаются следующие ключи - api_server (строка), token (строка) |
lifetime_period integer | Период времени существования |
load_balancers list / elements=string | Список имен классических балансировщиков нагрузки ELB |
max_size integer / required | Верхний предел количества экземпляров, до которого можно масштабировать |
mesosphere dictionary | Конфигурация интеграции Mesosphere. Ожидается следующий ключ - api_server (строка) |
min_size integer / required | Нижний предел количества экземпляров, до которого можно масштабировать |
monitoring string | Описывает, включен ли расширенный мониторинг экземпляров |
multai_load_balancers list / elements=dictionary | Параметры конфигурации балансировщиков нагрузки Multai. |
multai_token string | Токен, используемый для конфигурации Multai. |
name string / required | Уникальное имя для создаваемой, обновляемой или удаляемой группы Elastigroup |
network_interfaces list / elements=dictionary | Список хэшей/словарей сетевых интерфейсов для добавления в группу Elastigroup; ‘[{“key”:”value”, “key”:”value”}]’; разрешенные ключи - description (строка), device_index (целое число), secondary_private_ip_address_count (целое число), associate_public_ip_address (булево), delete_on_termination (булево), groups (список строк), network_interface_id (строка), private_ip_address (строка), subnet_id (строка), associate_ipv6_address (булево), private_ip_addresses (список объектов, ключи - privateIpAddress (строка, обязательно) и primary (булево)) |
on_demand_count integer | Требуется, если risk не установлен Количество экземпляров по запросу для запуска. Все остальные экземпляры будут спотовыми экземплярами. Установите этот параметр или параметр risk |
on_demand_instance_type string | Тип экземпляра по запросу, который будет подготовлен |
opsworks dictionary | Конфигурация интеграции OpsWorks для группы Elastigroup. Ожидается следующий ключ - layer_id (строка) |
persistence dictionary | Конфигурация состоятельной группы Elastigroup. Принимает следующие ключи - should_persist_root_device (булево), should_persist_block_devices (булево), should_persist_private_ip (булево) |
product string / required | Тип операционной системы. Доступные варианты: |
rancher dictionary | Конфигурация интеграции Rancher. Ожидаются следующие ключи - version (строка), access_key (строка), secret_key (строка), master_host (строка) |
right_scale dictionary | Конфигурация интеграции Rightscale. Ожидаются следующие ключи - account_id (строка), refresh_token (строка) |
risk integer | Требуется, если on demand не установлен. Процент спотовых экземпляров для запуска (0 - 100). |
roll_config словарь | Настройка развёртывания.; Если вы хотите, чтобы группа развернулась после обновления, используйте эту функцию. Принимает следующие ключи — batch_size_percentage (целое число, обязательно), grace_period (целое число, обязательно), health_check_type (строка, необязательно) |
scheduled_tasks список / элементы=словарь | Список хешей/словаря запланированных задач для настройки в группе; ‘[{“ключ”:”значение”, “ключ”:”значение”}]’; разрешенные ключи — adjustment (целое число), scale_target_capacity (целое число), scale_min_capacity (целое число), scale_max_capacity (целое число), adjustment_percentage (целое число), batch_size_percentage (целое число), cron_expression (строка), frequency (строка), grace_period (целое число), task_type (строка, обязательно), is_enabled (логическое значение) |
security_group_ids список / элементы=строка / обязательно | Один или несколько идентификаторов групп безопасности. ; В случае обновления он заменит существующую группу безопасности новым заданным массивом |
shutdown_script строка | Скрипт завершения работы, закодированный в Base64, который выполняется перед завершением работы экземпляра. Кодируйте перед установкой. |
signals список / элементы=словарь | Список хешей/словаря сигналов для настройки в группе; разрешенные ключи — name (строка, обязательно), timeout (целое число) |
spin_up_time целое число | Время запуска экземпляра в секундах. |
spot_instance_types список / элементы=строка / обязательно | Тип экземпляра Spot, который будет запущен. |
state строка | Создать или удалить группу. Варианты:
|
tags список / элементы=словарь | Список тегов для настройки в группе. Укажите список ключей и значений (ключ двоеточие значение); |
target целое число / обязательно | Количество запускаемых экземпляров. |
target_group_arns список / элементы=строка | Список арн целевых групп, к которым должны быть зарегистрированы экземпляры. |
target_tracking_policies список / элементы=словарь | Список хешей/словаря политик отслеживания целевых значений для настройки в группе; ‘[{“ключ”:”значение”, “ключ”:”значение”}]’; разрешенные ключи — policy_name (строка, обязательно), namespace (строка, обязательно), source (строка, обязательно), metric_name (строка, обязательно), statistic (строка, обязательно), unit (строка, обязательно), cooldown (строка, обязательно), target (строка, обязательно) |
tenancy строка | Выделенная или общая аренда. Доступные варианты: |
terminate_at_end_of_billing_hour булево | Завершить работу в конце часа выставления счетов Варианты:
|
token строка | Личный API-токен, выданный Spotinst. Если не указан, модуль попытается получить его в указанном порядке из: переменной окружения |
uniqueness_by строка | Если имена ваших групп не уникальны, вы можете использовать эту функцию для обновления или удаления конкретной группы. Всякий раз, когда эта свойство установлено, вы должны установить group_id для обновления или удаления группы, иначе группа будет создана. Варианты:
|
unit строка | Единица измерения ёмкости для запуска экземпляров. Доступные варианты: |
up_scaling_policies список / элементы=словарь | Список хешей/словаря политик масштабирования для настройки в группе; ‘[{“ключ”:”значение”, “ключ”:”значение”}]’; разрешенные ключи — policy_name (строка, обязательно), namespace (строка, обязательно), metric_name (строка, обязательно), dimensions (Список объектов, разрешенные ключи — name (строка, обязательно) и value (строка)), statistic (строка, обязательно) evaluation_periods (строка, обязательно), period (строка, обязательно), threshold (строка, обязательно), cooldown (строка, обязательно), unit (строка, обязательно), operator (строка, обязательно), action_type (строка, обязательно), adjustment (строка), min_target_capacity (строка), target (строка), maximum (строка), minimum (строка) |
user_data строка | Данные пользователя, закодированные в Base64, в формате MIME. Кодируйте перед установкой значения. |
utilize_reserved_instances boolean | В случае наличия зарезервированных экземпляров Elastigroup будет использовать ваши резервации, прежде чем покупать Spot-инстансы. Варианты:
|
wait_for_instances boolean | Должны ли действия по созданию/обновлению elastigroup ожидать запуска инстансов Варианты:
|
wait_timeout integer | Сколько времени модуль должен ждать инстансы перед отказом от действия; работает только если wait_for_instances равно True. |
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: нет | Может работать в |
diff_mode | Поддержка: нет | Возвращает подробности о том, что изменилось (или, возможно, требует изменения в |
Примеры
# Basic configuration YAML example
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
state: present
risk: 100
availability_vs_cost: balanced
availability_zones:
- name: us-west-2a
subnet_id: subnet-2b68a15c
image_id: ami-f173cc91
key_pair: spotinst-oregon
max_size: 15
min_size: 0
target: 0
unit: instance
monitoring: true
name: ansible-group
on_demand_instance_type: c3.large
product: Linux/UNIX
load_balancers:
- test-lb-1
security_group_ids:
- sg-8f4b8fe9
spot_instance_types:
- c3.large
do_not_update:
- image_id
- target
register: result
- ansible.builtin.debug: var=result
# In this example, we create an elastigroup and wait 600 seconds to retrieve the instances, and use their private ips
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
state: present
account_id: act-1a9dd2b
risk: 100
availability_vs_cost: balanced
availability_zones:
- name: us-west-2a
subnet_id: subnet-2b68a15c
tags:
- Environment: someEnvValue
- OtherTagKey: otherValue
image_id: ami-f173cc91
key_pair: spotinst-oregon
max_size: 5
min_size: 0
target: 0
unit: instance
monitoring: true
name: ansible-group-tal
on_demand_instance_type: c3.large
product: Linux/UNIX
security_group_ids:
- sg-8f4b8fe9
block_device_mappings:
- device_name: '/dev/sda1'
ebs:
volume_size: 100
volume_type: gp2
spot_instance_types:
- c3.large
do_not_update:
- image_id
wait_for_instances: true
wait_timeout: 600
register: result
- name: Store private ips to file
ansible.builtin.shell: echo {{ item.private_ip }}\n >> list-of-private-ips
with_items: "{{ result.instances }}"
- ansible.builtin.debug: var=result
# In this example, we create an elastigroup with multiple block device mappings, tags, and also an account id
# In organizations with more than one account, it is required to specify an account_id
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
state: present
account_id: act-1a9dd2b
risk: 100
availability_vs_cost: balanced
availability_zones:
- name: us-west-2a
subnet_id: subnet-2b68a15c
tags:
- Environment: someEnvValue
- OtherTagKey: otherValue
image_id: ami-f173cc91
key_pair: spotinst-oregon
max_size: 5
min_size: 0
target: 0
unit: instance
monitoring: true
name: ansible-group-tal
on_demand_instance_type: c3.large
product: Linux/UNIX
security_group_ids:
- sg-8f4b8fe9
block_device_mappings:
- device_name: '/dev/xvda'
ebs:
volume_size: 60
volume_type: gp2
- device_name: '/dev/xvdb'
ebs:
volume_size: 120
volume_type: gp2
spot_instance_types:
- c3.large
do_not_update:
- image_id
wait_for_instances: true
wait_timeout: 600
register: result
- name: Store private ips to file
ansible.builtin.shell: echo {{ item.private_ip }}\n >> list-of-private-ips
with_items: "{{ result.instances }}"
- ansible.builtin.debug: var=result
# In this example we have set up block device mapping with ephemeral devices
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
state: present
risk: 100
availability_vs_cost: balanced
availability_zones:
- name: us-west-2a
subnet_id: subnet-2b68a15c
image_id: ami-f173cc91
key_pair: spotinst-oregon
max_size: 15
min_size: 0
target: 0
unit: instance
block_device_mappings:
- device_name: '/dev/xvda'
virtual_name: ephemeral0
- device_name: '/dev/xvdb/'
virtual_name: ephemeral1
monitoring: true
name: ansible-group
on_demand_instance_type: c3.large
product: Linux/UNIX
load_balancers:
- test-lb-1
security_group_ids:
- sg-8f4b8fe9
spot_instance_types:
- c3.large
do_not_update:
- image_id
- target
register: result
- ansible.builtin.debug: var=result
# In this example we create a basic group configuration with a network interface defined.
# Each network interface must have a device index
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
state: present
risk: 100
availability_vs_cost: balanced
network_interfaces:
- associate_public_ip_address: true
device_index: 0
availability_zones:
- name: us-west-2a
subnet_id: subnet-2b68a15c
image_id: ami-f173cc91
key_pair: spotinst-oregon
max_size: 15
min_size: 0
target: 0
unit: instance
monitoring: true
name: ansible-group
on_demand_instance_type: c3.large
product: Linux/UNIX
load_balancers:
- test-lb-1
security_group_ids:
- sg-8f4b8fe9
spot_instance_types:
- c3.large
do_not_update:
- image_id
- target
register: result
- ansible.builtin.debug: var=result
# In this example we create a basic group configuration with a target tracking scaling policy defined
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
account_id: act-92d45673
state: present
risk: 100
availability_vs_cost: balanced
availability_zones:
- name: us-west-2a
subnet_id: subnet-79da021e
image_id: ami-f173cc91
fallback_to_od: true
tags:
- Creator: ValueOfCreatorTag
- Environment: ValueOfEnvironmentTag
key_pair: spotinst-labs-oregon
max_size: 10
min_size: 0
target: 2
unit: instance
monitoring: true
name: ansible-group-1
on_demand_instance_type: c3.large
product: Linux/UNIX
security_group_ids:
- sg-46cdc13d
spot_instance_types:
- c3.large
target_tracking_policies:
- policy_name: target-tracking-1
namespace: AWS/EC2
metric_name: CPUUtilization
statistic: average
unit: percent
target: 50
cooldown: 120
do_not_update:
- image_id
register: result
- ansible.builtin.debug: var=result
Значения возврата
Общие значения возврата описаны здесь, следующие являются полями, уникальными для этого модуля:
Ключ | Описание |
|---|---|
group_id string | ID созданной/обновленной группы. Возвращаемое значение: успех Пример: |
instances dictionary | Список активных инстансов elastigroup и их подробности. Возвращаемое значение: успех Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/general/spotinst_aws_elastigroup_module.html