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