spotinst_aws_elastigroup – Создание, обновление или удаление Spotinst AWS Elastigroups
Новое в версии 2.5.
Описание
- Может создавать, обновлять или удалять Spotinst AWS Elastigroups. Конфигурация запуска является частью конфигурации elastigroup, поэтому для обработки конфигурации запуска дополнительных модулей не требуется. Вам необходимо иметь файл с данными учетных данных в этом расположении - <home>/.spotinst/credentials. Файл учетных данных должен содержать строку, похожую на эту: token = <ВАШ ТОКЕН>. Полная документация доступна по адресу https://help.spotinst.com/hc/en-us/articles/115003530285-Ansible.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- python >= 2.7
- spotinst_sdk >= 1.0.38
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| account_id - | (Строка) Необязательный параметр, позволяющий задать идентификатор учетной записи внутри конфигурации модуля. По умолчанию он извлекается из пути к учетным данным. | |
| availability_vs_cost - / обязательно |
| (Строка) Стратегия ориентации. |
| availability_zones - / обязательно | (Список объектов) Список хэшей/словарей зон доступности, настроенных в elastigroup; '[{"ключ":"значение", "ключ":"значение"}]'; разрешенные ключи — имя (строка), subnet_id (строка), placement_group_name (строка), | |
| block_device_mappings - | (Список объектов) Список хэшей/словарей отображений блочных устройств для экземпляров elastigroup; Вы можете указать виртуальные устройства и тома EBS.; '[{"ключ":"значение", "ключ":"значение"}]'; разрешенные ключи — device_name (список строк), virtual_name (строка), no_device (строка), ebs (объект, ожидает следующие ключи — delete_on_termination(булево), encrypted(булево), iops (целое число), snapshot_id(целое число), volume_type(строка), volume_size(целое число)) | |
| chef - | (Объект) Конфигурация интеграции Chef.; Ожидает следующие ключи — chef_server (строка), organization (строка), user (строка), pem_key (строка), chef_version (строка) | |
| credentials_path - | (Строка) Необязательный параметр, позволяющий задать путь к учетным данным, отличный от стандартного. По умолчанию — ~/.spotinst/credentials | |
| down_scaling_policies - | (Список объектов) Список хэшей/словарей политик масштабирования для настройки в elastigroup; '[{"ключ":"значение", "ключ":"значение"}]'; разрешенные ключи — 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 - | (Целое число) Время, в секундах, для удаления экземпляра из входящих запросов и от регистрации из ELB перед завершением. | |
| ebs_optimized булево |
| (Булево) Включить оптимизацию EBS для поддерживаемых экземпляров, которые по умолчанию не включены. Примечание — будут добавлены дополнительные расходы. |
| ebs_volume_pool - | (Список объектов) Список хэшей/словарей устройств EBS для повторной привязки к elastigroup при их доступности; '[{"ключ":"значение", "ключ":"значение"}]'; разрешенные ключи — volume_ids (список строк), device_name (строка) | |
| ecs - | (Объект) Конфигурация интеграции ECS.; Ожидает следующий ключ — cluster_name (строка) | |
| elastic_ips - | (Список строк) Список идентификаторов выделенных IP-адресов (например eipalloc-9d4e16f8) для ассоциации с экземплярами группы. | |
| fallback_to_od булево |
| (Булево) В случае отсутствия доступных спотов Elastigroup запустит экземпляр по требованию вместо этого. |
| health_check_grace_period - | По умолчанию: 300 | (Целое число) Время, в секундах, после запуска экземпляра, для начала проверки его работоспособности. |
| health_check_type - |
| (Строка) Сервис, используемый для проверки работоспособности. |
| health_check_unhealthy_duration_before_replacement - | (Целое число) Минимальное время, в течение которого экземпляр должен быть неисправным, чтобы его можно было считать неисправным. | |
| iam_role_arn - | (Строка) Имя профиля IAM arn Используйте только iam_role_arn или iam_role_name | |
| iam_role_name - | (Строка) Имя профиля IAM Используйте только iam_role_arn или iam_role_name | |
| id - | (Строка) Идентификатор группы, если он уже существует, и вы хотите его обновить или удалить. Это не сработает, если поле uniqueness_by не установлено на id. Если это установлено, а поле uniqueness_by установлено, группа будет обновлена или удалена, но не создана. | |
| ignore_changes - |
| (Список строк) Список полей, изменения которых должны игнорироваться при обновлении. |
| image_id - / обязательно | (Строка) Идентификатор образа, используемый для запуска экземпляра. В случае конфликта между типом экземпляра и типом образа будет возвращена ошибка. | |
| key_pair - / обязательно | (Строка) Укажите пару ключей для присоединения к экземплярам. | |
| kubernetes - | (Объект) Конфигурация интеграции Kubernetes. Ожидает следующие ключи — api_server (строка), token (строка) | |
| lifetime_period - | (Строка) Срок действия. | |
| load_balancers - | (Список строк) Список имен классических ELB. | |
| max_size - / обязательно | (Целое число) Максимальное количество экземпляров, до которого можно масштабировать вверх. | |
| mesosphere - | (Объект) Конфигурация интеграции Mesosphere. Ожидает следующий ключ — api_server (строка) | |
| min_size - / обязательно | (Целое число) Минимальное количество экземпляров, до которого можно масштабировать вниз. | |
| monitoring - / обязательно | (Булево) Указывает, включено ли расширенное мониторинг экземпляров. | |
| name - / обязательно | (Строка) Уникальное имя для создаваемой, обновляемой или удаляемой elastigroup. | |
| network_interfaces - | (Список объектов) Список хэшей/словарей сетевых интерфейсов для добавления в elastigroup; '[{"ключ":"значение", "ключ":"значение"}]'; разрешенные ключи — описание (строка), 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 - | (Целое число) Обязательно, если риск не установлен. Количество экземпляров по требованию, которые необходимо запустить. Все остальные экземпляры будут экземплярами spot. Либо задайте этот параметр, либо параметр risk. | |
| on_demand_instance_type - / обязательно | (Строка) Тип экземпляра по требованию, который будет развернут. | |
| opsworks - | (Объект) Конфигурация интеграции OpsWorks для elastigroup.; Ожидает следующий ключ — layer_id (строка) |
| persistence - | (Object) Настройка конфигурации elastigroup с состоянием; Принимает следующие ключи — should_persist_root_device (Boolean), should_persist_block_devices (Boolean), should_persist_private_ip (Boolean) | |
| product - / обязательно |
| (String) Тип операционной системы._ |
| rancher - | (Object) Конфигурация интеграции Rancher; Ожидаются следующие ключи — version (String), access_key (String), secret_key (String), master_host (String) | |
| right_scale - | (Object) Конфигурация интеграции Rightscale; Ожидаются следующие ключи — account_id (String), refresh_token (String) | |
| risk - | (Integer) обязательно, если on demand не задан. Процент запуска экземпляров Spot (0 — 100). | |
| roll_config - | (Object) Конфигурация развёртывания; Если вы хотите, чтобы группа развёртывалась после обновления, используйте эту функцию. Принимает следующие ключи — batch_size_percentage(Integer, обязательно), grace_period - (Integer, обязательно), health_check_type(String, необязательно) | |
| scheduled_tasks - | (Список объектов) Список хэшей/словаря запланированных задач для настройки в elastigroup; '[{"key":"value", "key":"value"}]'; разрешённые ключи — adjustment (Integer), scale_target_capacity (Integer), scale_min_capacity (Integer), scale_max_capacity (Integer), adjustment_percentage (Integer), batch_size_percentage (Integer), cron_expression (String), frequency (String), grace_period (Integer), task_type (String, обязательно), is_enabled (Boolean) | |
| security_group_ids - / обязательно | (Список строк) Один или несколько идентификаторов групп безопасности. ; При обновлении он заменит существующую группу безопасности новым заданным массивом | |
| shutdown_script - | (String) Сценарий выключения, закодированный в Base64, который выполняется перед завершением работы экземпляра. Кодировать перед установкой. | |
| signals - | (Список объектов) Список хэшей/словаря сигналов для настройки в elastigroup; разрешённые ключи — name (String, обязательно), timeout (Integer) | |
| spin_up_time - | (Integer) Время запуска экземпляра в секундах | |
| spot_instance_types - / обязательно | (Список строк) Тип экземпляра Spot, который будет предоставлен. | |
| state - |
| (String) Создание или удаление elastigroup |
| tags - | (Список пар tagKey:tagValue) Список тегов для настройки в elastigroup. Укажите список ключей и значений (ключ двоеточие значение); | |
| target - / обязательно | (Integer) Количество запускаемых экземпляров | |
| target_group_arns - | (Список строк) Список арнов групп целевых экземпляров, к которым должны быть зарегистрированы экземпляры | |
| target_tracking_policies - | (Список объектов) Список хэшей/словаря политик отслеживания целей для настройки в elastigroup; '[{"key":"value", "key":"value"}]'; разрешённые ключи — policy_name (String, обязательно), namespace (String, обязательно), source (String, обязательно), metric_name (String, обязательно), statistic (String, обязательно), unit (String, обязательно), cooldown (String, обязательно), target (String, обязательно) | |
| tenancy - |
| (String) Dedicated или Shared аренда |
| terminate_at_end_of_billing_hour boolean |
| (Boolean) Завершить в конце часа выставления счетов |
| uniqueness_by - |
| (String) Если имена вашей группы не уникальны, вы можете использовать эту функцию для обновления или удаления определённой группы. При установке этого свойства необходимо указать group_id для обновления или удаления группы, в противном случае группа будет создана. |
| unit - / обязательно |
| (String) Единица измерения ресурсов для запуска экземпляров. |
| up_scaling_policies - | (Список объектов) Список хэшей/словаря политик масштабирования для настройки в elastigroup; '[{"key":"value", "key":"value"}]'; разрешённые ключи — policy_name (String, обязательно), namespace (String, обязательно), metric_name (String, обязательно), dimensions (Список объектов, разрешённые ключи — name (String, обязательно) и value (String)), statistic (String, обязательно) evaluation_periods (String, обязательно), period (String, обязательно), threshold (String, обязательно), cooldown (String, обязательно), unit (String, обязательно), operator (String, обязательно), action_type (String, обязательно), adjustment (String), min_target_capacity (String), target (String), maximum (String), minimum (String) | |
| user_data - | (String) MIME-данные пользователя, закодированные в Base64. Кодировать перед установкой значения. | |
| utilize_reserved_instances boolean |
| (Boolean) В случае наличия зарезервированных экземпляров Elastigroup будет использовать ваши резервирования перед покупкой экземпляров Spot. |
| wait_for_instances boolean |
| (Boolean) Должны ли действия создания/обновления elastigroup ждать запуска экземпляров |
| wait_timeout - | (Integer) Сколько времени модуль должен ждать экземпляры, прежде чем действие завершится ошибкой; работает только если wait_for_instances имеет значение True. |
Примеры
# Basic configuration YAML example
- hosts: localhost
tasks:
- name: create elastigroup
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
- 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
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
shell: echo {{ item.private_ip }}\n >> list-of-private-ips
with_items: "{{ result.instances }}"
- 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
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
shell: echo {{ item.private_ip }}\n >> list-of-private-ips
with_items: "{{ result.instances }}"
- debug: var=result
# In this example we have set up block device mapping with ephemeral devices
- hosts: localhost
tasks:
- name: create elastigroup
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
- 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
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
- 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
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
- debug: var=result
Возвращаемые значения
Общие возвращаемые значения документированы здесь, следующие являются полями, уникальными для этого модуля:
| Ключ | Возвращаемое | Описание |
|---|---|---|
| group_id строка | успешно | Идентификатор созданной/обновлённой группы. Пример: sig-12345 |
| instances словарь | успешно | Список активных экземпляров elastigroup и их подробности. Пример: [{'spotInstanceRequestId': 'sir-regs25zp', 'instanceId': 'i-09640ad8678234c', 'instanceType': 'm4.large', 'product': 'Linux/UNIX', 'availabilityZone': 'us-west-2b', 'privateIp': '180.0.2.244', 'createdAt': '2017-07-17T12:46:18.000Z', 'status': 'fulfilled'}] |
Статус
- Этот модуль не гарантирует обратную совместимость интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [сообщество]
Авторы
- Spotinst (@talzur)
Подсказка
Если вы обнаружите какие-либо проблемы в этом документе, вы можете отредактировать этот документ для улучшения.
© 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/spotinst_aws_elastigroup_module.html