Spec-Zone.ru › Ansible 2.9

elb_target_info – Сбор информации о группах целевых серверов, к которым относится целевой сервер

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

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

Описание

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

Псевдонимы: elb_target_facts

Требования

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

  • 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 для вывода полного списка, сделанного во время выполнения плейбука. Также можно использовать переменную среды ANSIBLE_DEBUG_BOTOCORE_LOGS.
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_info:
      instance_id: "{{ ansible_ec2_instance_id }}"
      region: "{{ ansible_ec2_placement_region }}"
    register: target_info

  - name: save fact for later
    set_fact:
      original_tgs: "{{ target_info.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_info:
      get_unused_target_groups: false
      instance_id: "{{ ansible_ec2_instance_id }}"
      region: "{{ ansible_ec2_placement_region }}"
    register: target_info
    until: (target_info.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_info:
      get_unused_target_groups: false
      instance_id: "{{ ansible_ec2_instance_id }}"
      region: "{{ ansible_ec2_placement_region }}"
    register: target_info
    until: (target_info.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_info.instance_target_groups}}"

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

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

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

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

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

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

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

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

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

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

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

Пример:
['healthy', 'draining', 'initial', 'unhealthy', 'unused', 'unavailable']
target_id
string
всегда
Идентификатор целевого объекта, относящийся к этому экземпляру

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

Пример:
[80]


Статус

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

Авторы

  • Yaakov Kuperman (@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.9/modules/elb_target_info_module.html

Spec-Zone.ru

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