Spec-Zone.ru › Ansible 2.11

community.general.spotinst_aws_elastigroup – Создание, обновление или удаление Spotinst AWS Elastigroups

Примечание

Этот плагин входит в коллекцию community.general (версия 2.0.1).

Для его установки используйте: 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.

Требования

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

  • python >= 2.7
  • spotinst_sdk >= 1.0.38

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
account_id
строка
(Строка) Необязательный параметр, позволяющий установить account-id в настройках модуля. По умолчанию он извлекается из пути к файлу credentials.
availability_vs_cost
строка / обязательно
(Строка) Направление стратегии.
Доступные варианты: availabilityOriented, costOriented, balanced.
availability_zones
список / элементы=строка / обязательно
(Список объектов) Список словарей/списков зон доступности, настроенных в elastigroup; '[{"ключ":"значение", "ключ":"значение"}']; разрешенные ключи: name (Строка), 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"
(Путь) Необязательный параметр, позволяющий задать путь к файлам 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
(Булево) В случае отсутствия доступных spot-инстансов Elastigroup запустит экземпляр On-demand вместо него.
health_check_grace_period
целое число
(Целое число) Время в секундах после запуска экземпляра для начала и проверки его состояния.
Если не указано, используется значение по умолчанию 300.
health_check_type
строка
(Строка) Сервис, используемый для проверки состояния.
Доступные варианты: ELB, HCS, TARGET_GROUP, MLB, EC2.
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 установлено, группа будет обновлена или удалена, но не создана.
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; '[{"ключ":"значение", "ключ":"значение"}']; разрешенные ключи - 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
строка / обязательно
(Строка) Тип операционной системы.
Доступные варианты: Linux/UNIX, SUSE Linux, Windows, Linux/UNIX (Amazon VPC, SUSE Linux (Amazon VPC.
rancher
словарь
(Объект) Настройки интеграции Rancher; Ожидаются следующие ключи - version (Строка), 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
list / elements=string
(Список объектов) список хешей/словарей запланированных задач для настройки в 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
list / elements=string / required
(Список строк) Один или несколько идентификаторов групп безопасности. ; В случае обновления он переопределит существующую группу безопасности новым заданным массивом
shutdown_script
string
(Строка) Сценарий завершения работы, закодированный в Base64, который выполняется перед завершением работы экземпляра. Закодируйте перед установкой.
signals
list / elements=string
(Список объектов) список хешей/словарей сигналов для настройки в elastigroup; разрешенные ключи — name (строка, обязательно), timeout (целое число)
spin_up_time
integer
(Целое число) Время запуска экземпляра в секундах
spot_instance_types
list / elements=string / required
(Список строк) Тип экземпляра Spot, который будет развернут.
state
string
    Варианты:
  • present ←
  • absent
(Строка) создать или удалить elastigroup
tags
list / elements=string
(Список пар key:value тегов) список тегов для настройки в elastigroup. Укажите список ключей и значений (ключ двоеточие значение);
target
integer / required
(Целое число) Количество экземпляров, которые нужно запустить
target_group_arns
list / elements=string
(Список строк) Список арнов групп целей, к которым должны быть зарегистрированы экземпляры
target_tracking_policies
list / elements=string
(Список объектов) список хешей/словарей политик отслеживания целей для настройки в elastigroup; '[{"key":"value", "key":"value"}]'; разрешенные ключи — policy_name (строка, обязательно), namespace (строка, обязательно), source (строка, обязательно), metric_name (строка, обязательно), statistic (строка, обязательно), unit (строка, обязательно), cooldown (строка, обязательно), target (строка, обязательно)
tenancy
string
(Строка) выделенная или общая аренда.
Доступные варианты: default, dedicated.
terminate_at_end_of_billing_hour
boolean
    Варианты:
  • no
  • yes
(Булево) Завершить в конце часа выставления счетов
uniqueness_by
string
    Варианты:
  • id
  • name ←
(Строка) Если имена групп не уникальны, вы можете использовать эту функцию для обновления или удаления конкретной группы. Всякий раз, когда эта свойство установлено, вы должны установить group_id, чтобы обновить или удалить группу, в противном случае группа будет создана.
unit
string
(Строка) Единица измерения емкости для запуска экземпляров.
Доступные варианты: instance, weight.
up_scaling_policies
list / elements=string
(Список объектов) список хешей/словарей политик масштабирования для настройки в 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
string
(Строка) Данные пользователя MIME, закодированные в Base64. Закодируйте перед установкой значения.
utilize_reserved_instances
boolean
    Варианты:
  • no
  • yes
(Булево) В случае наличия резервированных экземпляров Elastigroup будет использовать ваши резервации перед покупкой экземпляров Spot.
wait_for_instances
boolean
    Варианты:
  • no ←
  • yes
(Булево) Должны ли действия по созданию/обновлению elastigroup ожидать запуска экземпляров
wait_timeout
integer
(Целое число) Сколько времени модуль должен ждать экземпляров, прежде чем действие завершится неудачей.; Работает только если wait_for_instances равно True.

Примеры

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

Пример:
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–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/general/spotinst_aws_elastigroup_module.html

Spec-Zone.ru

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