Spec-Zone.ru › Ansible

Модуль 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

Ориентация стратегии.

Доступные варианты: availabilityOriented, costOriented, balanced.

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

Необязательный параметр, позволяющий задать нестандартный путь к учетным данным.

По умолчанию: "~/.spotinst/credentials"

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 для поддерживаемых экземпляров, которые по умолчанию не включены.; Примечание — будут взиматься дополнительные сборы.

Варианты:

  • false
  • true

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 (пример eipalloc-9d4e16f8) для ассоциации с экземплярами группы

fallback_to_od

boolean

В случае отсутствия доступных spot-экземпляров Elastigroup запустит вместо них экземпляр по запросу

Варианты:

  • false
  • true

health_check_grace_period

integer

Время в секундах после запуска экземпляра, необходимое для начала проверки его работоспособности.

Если не указано, по умолчанию используется 300.

health_check_type

string

Сервис для использования в проверке работоспособности.

Доступные варианты: ELB, HCS, TARGET_GROUP, MLB, EC2.

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

Тип операционной системы.

Доступные варианты: Linux/UNIX, SUSE Linux, Windows, Linux/UNIX (Amazon VPC), SUSE Linux (Amazon VPC).

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

строка

Создать или удалить группу.

Варианты:

  • "present" ← (по умолчанию)
  • "absent"

tags

список / элементы=словарь

Список тегов для настройки в группе. Укажите список ключей и значений (ключ двоеточие значение);

target

целое число / обязательно

Количество запускаемых экземпляров.

target_group_arns

список / элементы=строка

Список арн целевых групп, к которым должны быть зарегистрированы экземпляры.

target_tracking_policies

список / элементы=словарь

Список хешей/словаря политик отслеживания целевых значений для настройки в группе; ‘[{“ключ”:”значение”, “ключ”:”значение”}]’; разрешенные ключи — policy_name (строка, обязательно), namespace (строка, обязательно), source (строка, обязательно), metric_name (строка, обязательно), statistic (строка, обязательно), unit (строка, обязательно), cooldown (строка, обязательно), target (строка, обязательно)

tenancy

строка

Выделенная или общая аренда.

Доступные варианты: default, dedicated.

terminate_at_end_of_billing_hour

булево

Завершить работу в конце часа выставления счетов

Варианты:

  • false
  • true

token

строка

Личный API-токен, выданный Spotinst.

Если не указан, модуль попытается получить его в указанном порядке из: переменной окружения SPOTINST_TOKEN, или из пути к учетным данным.

uniqueness_by

строка

Если имена ваших групп не уникальны, вы можете использовать эту функцию для обновления или удаления конкретной группы. Всякий раз, когда эта свойство установлено, вы должны установить group_id для обновления или удаления группы, иначе группа будет создана.

Варианты:

  • "id"
  • "name" ← (по умолчанию)

unit

строка

Единица измерения ёмкости для запуска экземпляров.

Доступные варианты: instance, weight.

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-инстансы.

Варианты:

  • false
  • true

wait_for_instances

boolean

Должны ли действия по созданию/обновлению elastigroup ожидать запуска инстансов

Варианты:

  • false ← (по умолчанию)
  • true

wait_timeout

integer

Сколько времени модуль должен ждать инстансы перед отказом от действия; работает только если wait_for_instances равно True.

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: нет

Может работать в check_mode и возвращать прогноз о статусе изменений без изменения целевого объекта.

diff_mode

Поддержка: нет

Возвращает подробности о том, что изменилось (или, возможно, требует изменения в check_mode), при включенном режиме diff.

Примеры

# 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 созданной/обновленной группы.

Возвращаемое значение: успех

Пример: "sig-12345"

instances

dictionary

Список активных инстансов elastigroup и их подробности.

Возвращаемое значение: успех

Пример: [{"availabilityZone": "us-west-2b", "createdAt": "2017-07-17T12:46:18.000Z", "instanceId": "i-09640ad8678234c", "instanceType": "m4.large", "privateIp": "180.0.2.244", "product": "Linux/UNIX", "spotInstanceRequestId": "sir-regs25zp", "status": "fulfilled"}]

Авторы

  • Spotinst (@talzur)

Ссылки на коллекцию

  • Система отслеживания задач
  • Репозиторий (источники)
  • Задайте вопрос о помощи
  • Отправить отчет об ошибке
  • Запросить функцию
  • Связь

© 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

Spec-Zone.ru

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