Spec-Zone.ru › Ansible 2.8

elb_target_facts – Сбор информации о целевых группах, к которым принадлежит целевой объект

Новое в версии 2.7.

  • Обзор
  • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения
  • Статус

Обзор

  • Этот модуль ищет все целевые группы в регионе, чтобы определить, какие из них зарегистрировали заданный идентификатор экземпляра или IP-адрес.

Требования

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

  • boto
  • boto3
  • botocore
  • python >= 2.6

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
aws_access_key
строка
Ключ доступа AWS. Если не задано, используется значение переменной окружения AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY или EC2_ACCESS_KEY.

псевдонимы: ec2_access_key, access_key
aws_secret_key
строка
Секретный ключ AWS. Если не задано, используется значение переменной окружения AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY или EC2_SECRET_KEY.

псевдонимы: ec2_secret_key, secret_key
debug_botocore_endpoint_logs
логический
добавлен в 2.8
    Варианты:
  • нет ←
  • да
Использовать логирование botocore.endpoint для анализа уникальных (а не суммарных) API-вызовов «ресурс:действие», совершённых во время задачи, выводя набор в ключ resource_actions результатов задачи. Используйте обратный вызов aws_resource_action для вывода в общий список, созданный во время выполнения книги команд.
ec2_url
строка
URL для подключения к EC2 или вашему облаку Eucalyptus (по умолчанию модуль использует конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех других модулей, если регион не используется. Если не задано, используется значение переменной окружения EC2_URL, если она задана.
get_unused_target_groups
логический
    Варианты:
  • нет
  • да ←
Получать ли целевые группы, не используемые ни одним балансировщиком нагрузки.
instance_id
строка / обязательно
Идентификатор экземпляра, для которого нужно получить информацию.
profile
строка
Использование профиля boto. Работает только с boto >= 2.24.0.
region
строка
AWS-регион для использования. Если не указано, используется значение переменной окружения AWS_REGION или EC2_REGION, если она задана. См. http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region

псевдонимы: aws_region, ec2_region
security_token
строка
Токен безопасности AWS STS. Если не задано, используется значение переменной окружения AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN.

псевдонимы: access_token
validate_certs
логический
    Варианты:
  • нет
  • да ←
При установке в «нет», сертификаты SSL не будут проверены для версий boto >= 2.6.0.

Примечания

Примечание

  • Если параметры не заданы в модуле, можно использовать следующие переменные окружения в порядке убывания приоритета AWS_URL или EC2_URL, AWS_ACCESS_KEY_ID или AWS_ACCESS_KEY или EC2_ACCESS_KEY, AWS_SECRET_ACCESS_KEY или AWS_SECRET_KEY или EC2_SECRET_KEY, AWS_SECURITY_TOKEN или EC2_SECURITY_TOKEN, AWS_REGION или EC2_REGION
  • Ansible использует конфигурационный файл boto (обычно ~/.boto), если данные о доступе не предоставлены. См. https://boto.readthedocs.io/en/latest/boto_config_tut.html
  • AWS_REGION или EC2_REGION обычно используются для указания AWS-региона, когда это требуется, но это также можно настроить в конфигурационном файле boto

Примеры

# practical use case - dynamically deregistering and reregistering nodes

  - name: Get EC2 Metadata
    action: ec2_metadata_facts

  - name: Get initial list of target groups
    delegate_to: localhost
    elb_target_facts:
      instance_id: "{{ ansible_ec2_instance_id }}"
      region: "{{ ansible_ec2_placement_region }}"
    register: target_facts

  - name: save fact for later
    set_fact:
      original_tgs: "{{ target_facts.instance_target_groups }}"

  - name: Deregister instance from all target groups
    delegate_to: localhost
    elb_target:
        target_group_arn: "{{ item.0.target_group_arn }}"
        target_port: "{{ item.1.target_port }}"
        target_az: "{{ item.1.target_az }}"
        target_id: "{{ item.1.target_id }}"
        state: absent
        target_status: "draining"
        region: "{{ ansible_ec2_placement_region }}"
    with_subelements:
      - "{{ original_tgs }}"
      - "targets"

    # This avoids having to wait for 'elb_target' to serially deregister each
    # target group.  An alternative would be to run all of the 'elb_target'
    # tasks async and wait for them to finish.

  - name: wait for all targets to deregister simultaneously
    delegate_to: localhost
    elb_target_facts:
      get_unused_target_groups: false
      instance_id: "{{ ansible_ec2_instance_id }}"
      region: "{{ ansible_ec2_placement_region }}"
    register: target_facts
    until: (target_facts.instance_target_groups | length) == 0
    retries: 60
    delay: 10

  - name: reregister in elbv2s
    elb_target:
      region: "{{ ansible_ec2_placement_region }}"
      target_group_arn: "{{ item.0.target_group_arn }}"
      target_port: "{{ item.1.target_port }}"
      target_az: "{{ item.1.target_az }}"
      target_id: "{{ item.1.target_id }}"
      state: present
      target_status: "initial"
    with_subelements:
      - "{{ original_tgs }}"
      - "targets"

  # wait until all groups associated with this instance are 'healthy' or
  # 'unused'
  - name: wait for registration
    elb_target_facts:
      get_unused_target_groups: false
      instance_id: "{{ ansible_ec2_instance_id }}"
      region: "{{ ansible_ec2_placement_region }}"
    register: target_facts
    until: (target_facts.instance_target_groups |
            map(attribute='targets') |
            flatten |
            map(attribute='target_health') |
            rejectattr('state', 'equalto', 'healthy') |
            rejectattr('state', 'equalto', 'unused') |
            list |
            length) == 0
    retries: 61
    delay: 10

# using the target groups to generate AWS CLI commands to reregister the
# instance - useful in case the playbook fails mid-run and manual
#            rollback is required
  - name: "reregistration commands: ELBv2s"
    debug:
      msg: >
             aws --region {{ansible_ec2_placement_region}} elbv2
             register-targets --target-group-arn {{item.target_group_arn}}
             --targets{%for target in item.targets%}
             Id={{target.target_id}},
             Port={{target.target_port}}{%if target.target_az%},AvailabilityZone={{target.target_az}}
             {%endif%}
             {%endfor%}
    loop: "{{target_facts.instance_target_groups}}"

Возвращаемые значения

Общие возвращаемые значения описаны здесь, следующие поля уникальны для этого модуля:

Ключ Возвращаемое Описание
instance_target_groups
сложное
всегда
список целевых групп, к которым зарегистрирован экземпляр

target_group_arn
строка
всегда
ARN целевой группы

Пример:
['arn:aws:elasticloadbalancing:eu-west-1:111111111111:targetgroup/target-group/deadbeefdeadbeef']
target_group_type
строка
всегда
Тип целевой группы, используемой для этой группы

Пример:
['ip', 'instance']
targets
сложное
всегда
Список целевых объектов, которые указывают на этот идентификатор экземпляра

target_az
строка
если с этим экземпляром связан AZ
доступная зона, явно связанная с этим целевым объектом

Пример:
['us-west-2a']
target_health
сложное
всегда
описание состояния целевого объекта (см. https://boto3.readthedocs.io/en/latest/ reference/services/elbv2.html#ElasticLoadBalancingv2.Client.describe_target_health) для всех возможных значений

description
-
если state!=present
описание состояния целевого объекта

Пример:
['Процесс дерегистрации целевого объекта в процессе']
reason
-
если state!=healthy
код причины состояния целевого объекта

Пример:
['Процесс дерегистрации целевого объекта в процессе']
state
-
всегда
состояние работоспособности

Пример:
['работоспособен', 'вывод', 'начальное', 'неработоспособен', 'неиспользуемый', 'недоступен']
target_id
строка
всегда
Идентификатор целевого объекта, относящийся к этому экземпляру

Пример:
['i-deadbeef', '1.2.3.4']
target_port
строка
всегда
порт, на котором этот целевой объект слушает

Пример:
[80]


Статус

  • Этот модуль не гарантирует обратную совместимость интерфейса. [предварительный просмотр]
  • Этот модуль поддерживается сообществом Ansible. [сообщество]

Авторы

  • Яаков Куперман (@yaakov-github)

Подсказка

Если вы обнаружите какие-либо проблемы в этом документе, вы можете отредактировать этот документ, чтобы улучшить его.

© 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/elb_target_facts_module.html

Spec-Zone.ru

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