Spec-Zone.ru › Ansible 2.8

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
- / обязательно
    Варианты:
  • availabilityOriented
  • costOriented
  • balanced
(Строка) Стратегия ориентации.
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
булево
    Варианты:
  • no
  • yes
(Булево) Включить оптимизацию EBS для поддерживаемых экземпляров, которые по умолчанию не включены. Примечание — будут добавлены дополнительные расходы.
ebs_volume_pool
-
(Список объектов) Список хэшей/словарей устройств EBS для повторной привязки к elastigroup при их доступности; '[{"ключ":"значение", "ключ":"значение"}]'; разрешенные ключи — volume_ids (список строк), device_name (строка)
ecs
-
(Объект) Конфигурация интеграции ECS.; Ожидает следующий ключ — cluster_name (строка)
elastic_ips
-
(Список строк) Список идентификаторов выделенных IP-адресов (например eipalloc-9d4e16f8) для ассоциации с экземплярами группы.
fallback_to_od
булево
    Варианты:
  • no
  • yes
(Булево) В случае отсутствия доступных спотов Elastigroup запустит экземпляр по требованию вместо этого.
health_check_grace_period
-
По умолчанию:
300
(Целое число) Время, в секундах, после запуска экземпляра, для начала проверки его работоспособности.
health_check_type
-
    Варианты:
  • ELB
  • HCS
  • TARGET_GROUP
  • MLB
  • EC2
(Строка) Сервис, используемый для проверки работоспособности.
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
  • target
(Список строк) Список полей, изменения которых должны игнорироваться при обновлении.
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
- / обязательно
    Варианты:
  • Linux/UNIX
  • SUSE Linux
  • Windows
  • Linux/UNIX (Amazon VPC)
  • SUSE Linux (Amazon VPC)
  • Windows
(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
-
    Варианты:
  • present
  • absent
(String) создание или удаление elastigroup
tags
-
(Список пар key:value тегов) Список тегов для настройки в elastigroup. Укажите список ключей и значений (ключ двоеточие значение);
target
- / обязательно
(Integer) Количество экземпляров для запуска
target_group_arns
-
(Список строк) Список идентификаторов ARN целевых групп, к которым должны быть зарегистрированы экземпляры
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
-
    Варианты:
  • default
  • dedicated
(String) выделенная vs общая аренда
terminate_at_end_of_billing_hour
boolean
    Варианты:
  • no
  • yes
(Boolean) завершать по окончании часа выставления счёта
uniqueness_by
-
    Варианты:
  • id
  • name
(String) Если имена групп не уникальны, можно использовать эту функцию для обновления или удаления определённой группы. При установке этого свойства необходимо указать group_id для обновления или удаления группы, в противном случае группа будет создана.
unit
- / обязательно
    Варианты:
  • instance
  • weight
(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
    Варианты:
  • no
  • yes
(Boolean) В случае наличия зарезервированных экземпляров Elastigroup будет использовать ваши резервирования, прежде чем покупать Spot-инстансы.
wait_for_instances
boolean
    Варианты:
  • no
  • yes
(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. [community]

Авторы

  • 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.8/modules/spotinst_aws_elastigroup_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API