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