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.
Требования
Ниже приведены требования к хосту, на котором будет выполняться этот модуль.
- spotinst >= 1.0.21
- python >= 2.7
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| account_id | (Строка) Необязательный параметр, позволяющий установить account-id в конфигурации модуля. По умолчанию он извлекается из пути к файлу учетных данных. | |
| availability_vs_cost обязательно |
| (Строка) Стратегия ориентации. |
| availability_zones обязательно | (Список объектов) Список словарей/хешей зон доступности, настроенных в elastigroup; '[{"key":"value", "key":"value"}]'; разрешенные ключи: name (Строка), subnet_id (Строка), placement_group_name (Строка). | |
| block_device_mappings | (Список объектов) Список словарей/хешей отображений блочных устройств для экземпляров 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 | (Объект) Конфигурация интеграции Chef.; Ожидаются следующие ключи - chef_server (Строка), organization (Строка), user (Строка), pem_key (Строка), chef_version (Строка). | |
| credentials_path | (Строка) Необязательный параметр, позволяющий установить путь к файлу учетных данных, отличный от стандартного. По умолчанию ~/.spotinst/credentials. | |
| down_scaling_policies | (Список объектов) Список словарей/хешей политик масштабирования для настройки в 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 | (Целое число) Время для удаления экземпляра из входящих запросов и дерегистрации из ELB перед завершением. | |
| ebs_optimized | (Булево) Включить оптимизацию EBS для поддерживаемых экземпляров, которые по умолчанию отключены.; Примечание - будут применяться дополнительные расходы. | |
| ebs_volume_pool | (Список объектов) Список словарей/хешей устройств EBS для повторного подключения к elastigroup при их доступности; '[{"key":"value", "key":"value"}]'; разрешенные ключи - volume_ids (Список строк), device_name (Строка). | |
| ecs | (Объект) Конфигурация интеграции ECS.; Ожидается следующий ключ - cluster_name (Строка). | |
| elastic_ips | (Список строк) Список идентификаторов выделенных Elastic IP-адресов для ассоциации с экземплярами группы. | |
| fallback_to_od | (Булево) В случае отсутствия доступных spot-инстансов Elastigroup запустит экземпляр On-demand вместо этого. | |
| health_check_grace_period | По умолчанию: 300 | (Целое число) Время в секундах после запуска экземпляра для начала и проверки его работоспособности. |
| health_check_type |
| (Строка) Сервис, используемый для проверки работоспособности. |
| health_check_unhealthy_duration_before_replacement | (Целое число) Минимальное время, в течение которого экземпляр должен быть неработоспособным, чтобы считаться таковым. | |
| iam_role_arn | (Строка) ARN профиля IAM экземпляра. Используйте только 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; '[{"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 | (Целое число) Обязательно, если риск не задан. Количество экземпляров On-demand для запуска. Все остальные экземпляры будут spot-инстансами.; Либо задайте этот параметр, либо параметр risk. | |
| on_demand_instance_type обязательно | (Строка) Тип экземпляра On-demand, который будет развернут. | |
| opsworks | (Объект) Конфигурация интеграции elastigroup OpsWorks.; Ожидается следующий ключ - layer_id (Строка). | |
| persistence | (Объект) Конфигурация устойчивого elastigroup.; Принимает следующие ключи - should_persist_root_device (Булево), should_persist_block_devices (Булево), should_persist_private_ip (Булево). | |
| product обязательно |
| (Строка) Тип операционной системы. |
| rancher | (Объект) Конфигурация интеграции Rancher.; Ожидаются следующие ключи - access_key (Строка), secret_key (Строка), master_host (Строка). | |
| right_scale | (Объект) Конфигурация интеграции Rightscale.; Ожидаются следующие ключи - account_id (Строка), refresh_token (Строка). | |
| risk | (Целое число) обязательно, если on_demand не задан. Процент запуска spot-инстансов (0 - 100). | |
| roll_config | (Объект) Конфигурация развертывания.; Если вы хотите, чтобы группа развернулась после обновления, используйте эту функцию. Принимает следующие ключи - batch_size_percentage(Целое число, обязательно), grace_period - (Целое число, обязательно), health_check_type(Строка, необязательно). | |
| scheduled_tasks | (Список объектов) Список словарей/хешей запланированных задач для настройки в elastigroup; '[{"key":"value", "key":"value"}]'; разрешенные ключи - 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 | (Список объектов) Список словарей/хешей сигналов для настройки в elastigroup; разрешенные ключи - name (Строка, обязательно), timeout (Целое число). |
| spin_up_time | (Целое число) Время запуска экземпляра в секундах | |
| spot_instance_types обязательно | (Список строк) Тип экземпляра Spot, который будет развернут. | |
| state |
| (Строка) Создать или удалить elastigroup |
| tags | (Список пар ключ:значение тегов) Список тегов для настройки elastigroup. Укажите список ключей и значений (ключ двоеточие значение); | |
| target обязательно | (Целое число) Количество экземпляров для запуска | |
| target_group_arns | (Список строк) Список ARN целевых групп, к которым должны быть зарегистрированы экземпляры. | |
| target_tracking_policies | (Список объектов) Список словарей/сложно построенных объектов политик отслеживания целей для настройки в elastigroup; '[{"key":"value", "key":"value"}]'; разрешенные ключи - policy_name (строка, обязательно), namespace (строка, обязательно), source (строка, обязательно), metric_name (строка, обязательно), statistic (строка, обязательно), unit (строка, обязательно), cooldown (строка, обязательно), target (строка, обязательно) | |
| tenancy |
| (Строка) Виртуальная vs выделенная аренда |
| terminate_at_end_of_billing_hour | (Булево) Завершить в конце часа оплаты | |
| uniqueness_by |
| (Строка) Если имена групп не уникальны, вы можете использовать эту функцию для обновления или удаления определённой группы. Всякий раз, когда этот параметр установлен, необходимо установить group_id для обновления или удаления группы, в противном случае будет создана группа. |
| unit обязательно |
| (Строка) Единица измерения мощности для запуска экземпляров. |
| up_scaling_policies | (Список объектов) Список словарей/сложно построенных объектов политик масштабирования для настройки в elastigroup; '[{"key":"value", "key":"value"}]'; разрешенные ключи - 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 | (Булево) В случае наличия зарезервированных экземпляров Elastigroup будет использовать ваши резервации перед покупкой экземпляров Spot. | |
| wait_for_instances | (Булево) Должны ли действия создания/обновления elastigroup ожидать запуска экземпляров | |
| wait_timeout | (Целое число) Сколько времени модуль должен ожидать экземпляры перед ошибкой действия; работает только если 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 и их подробности. Пример: [{'status': 'fulfilled', 'product': 'Linux/UNIX', 'availabilityZone': 'us-west-2b', 'instanceId': 'i-09640ad8678234c', 'spotInstanceRequestId': 'sir-regs25zp', 'privateIp': '180.0.2.244', 'instanceType': 'm4.large', 'createdAt': '2017-07-17T12:46:18.000Z'}] |
Статус
Этот модуль помечен как предварительный просмотр, что означает, что он не гарантирует обратной совместимости интерфейса.
Автор
- Spotinst
Подсказка
Если вы обнаружите какие-либо проблемы в этом руководстве, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/modules/spotinst_aws_elastigroup_module.html