Spec-Zone.ru › Ansible 2.5

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
обязательно
    Варианты:
  • availabilityOriented
  • costOriented
  • balanced
(Строка) Стратегия ориентации.
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
    Варианты:
  • 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, группа будет либо обновлена, либо удалена, но не создана.
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; '[{"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
обязательно
    Варианты:
  • Linux/UNIX
  • SUSE Linux
  • Windows
  • Linux/UNIX (Amazon VPC)
  • SUSE Linux (Amazon VPC)
  • Windows
(Строка) Тип операционной системы.
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
    Варианты:
  • present
  • absent
(Строка) Создать или удалить 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
    Варианты:
  • default
  • dedicated
(Строка) Виртуальная vs выделенная аренда
terminate_at_end_of_billing_hour
(Булево) Завершить в конце часа оплаты
uniqueness_by
    Варианты:
  • id
  • name
(Строка) Если имена групп не уникальны, вы можете использовать эту функцию для обновления или удаления определённой группы. Всякий раз, когда этот параметр установлен, необходимо установить group_id для обновления или удаления группы, в противном случае будет создана группа.
unit
обязательно
    Варианты:
  • instance
  • weight
(Строка) Единица измерения мощности для запуска экземпляров.
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

Spec-Zone.ru

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