Spec-Zone.ru › Ansible 2.6

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
(Список строк) Список идентификаторов выделения ElasticIPs для ассоциации с экземплярами группы.
fallback_to_od
(Логическое) В случае отсутствия доступных спотов, 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
(Целое число) Требуется, если risk не задан.
Количество экземпляров on demand для запуска. Все остальные экземпляры будут спот-экземплярами.; Либо установите этот параметр, либо параметр risk.
on_demand_instance_type
обязательно
(Строка) Тип экземпляра on-demand, который будет запущен.
opsworks
(Объект) Конфигурация интеграции OpsWorks elastigroup.; Ожидает следующий ключ - layer_id (строка)
persistence
(Объект) Конфигурация stateful 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 не задан. Процент запуска спот-экземпляров (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
(Список пар tagKey:tagValue) Список тегов для настройки elastigroup. Укажите список ключей и значений (ключ двоеточие значение);
target
обязательно
(Целое число) Количество экземпляров для запуска.
target_group_arns
(Список строк) Список арн целевых групп, к которым должны быть зарегистрированы экземпляры.
target_tracking_policies
(Список объектов) Список хэш-таблиц/словарей политик отслеживания целей для настройки в elastigroup; '[{"key":"value", "key":"value"}]'; разрешенные ключи - policy_name (строка, обязательно), namespace (строка, обязательно), source (строка, обязательно), metric_name (строка, обязательно), statistic (строка, обязательно), unit (строка, обязательно), cooldown (строка, обязательно), target (строка, обязательно).
tenancy
    Выбор:
  • default
  • dedicated
(Строка) Dedicated или общий тип аренды.
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
строка
успех
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. См. Техническое обслуживание и поддержка модулей для получения дополнительной информации.

Список других модулей, которые также поддерживаются сообществом Ansible, см. здесь.

Автор

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

Spec-Zone.ru

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