community.aws.elb_target_info – Сбор информации о целевых группах, к которым относится целевой элемент.
Примечание
Этот плагин входит в коллекцию community.aws (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install community.aws.
Для использования в книге задач укажите: community.aws.elb_target_info.
Новое в версии 1.0.0: из community.aws
Обзор
- Этот модуль выполнит поиск по всем целевым группам в регионе, чтобы определить, к каким из них зарегистрирован данный идентификатор экземпляра или IP-адрес.
- Этот модуль назывался
elb_target_factsдо Ansible 2.9. Использование не изменилось.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- boto
- boto3
- botocore
- python >= 2.6
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| aws_access_key строка | Ключ доступа AWS. Если не задан, используется значение переменной среды AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY или EC2_ACCESS_KEY. Если установлен параметр profile, этот параметр игнорируется. Одновременное указание параметров aws_access_key и profile устарело, и эти параметры будут взаимно исключать друг друга после 2022-06-01. Псевдонимы: ec2_access_key, access_key | |
| aws_ca_bundle путь | Расположение файла CA Bundle для проверки SSL-сертификатов. Используется только для модулей на основе boto3. Примечание: CA Bundle считывается со стороны модуля и может потребоваться явное копирование с контроллера, если запуск не выполняется локально. | |
| aws_config словарь | Словарь для модификации конфигурации botocore. Параметры можно найти на https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config. Только ключ 'user_agent' используется для boto-модулей. См. http://boto.cloudhackers.com/en/latest/boto_config_tut.html#boto для получения более подробной информации о конфигурации boto. | |
| aws_secret_key строка | Секретный ключ AWS. Если не задан, используется значение переменной среды AWS_SECRET_ACCESS_KEY, AWS_SECRET_KEY или EC2_SECRET_KEY. Если установлен параметр profile, этот параметр игнорируется. Одновременное указание параметров aws_secret_key и profile устарело, и эти параметры будут взаимно исключать друг друга после 2022-06-01. Псевдонимы: ec2_secret_key, secret_key | |
| debug_botocore_endpoint_logs логический тип |
| Использование логирования botocore.endpoint для анализа уникальных (а не суммарных) API-вызовов «ресурс:действие», выполненных во время задачи, выводя набор в ключ resource_actions в результатах задачи. Используйте обратный вызов aws_resource_action для вывода общего списка, созданного в течение книги задач. Переменная среды ANSIBLE_DEBUG_BOTOCORE_LOGS также может быть использована. |
| ec2_url строка | URL для подключения к EC2 или облаку Eucalyptus (по умолчанию модуль использует конечные точки EC2). Игнорируется для модулей, где требуется регион. Должен быть указан для всех остальных модулей, если регион не используется. Если не указан, используется значение переменной среды EC2_URL, если таковая имеется. Псевдонимы: aws_endpoint_url, endpoint_url | |
| get_unused_target_groups логический тип |
| Получать ли целевые группы, не используемые никакими балансировщиками нагрузки. |
| instance_id строка / обязательно | Идентификатор экземпляра, для которого требуется информация. | |
| profile строка | Использует профиль boto. Работает только с boto >= 2.24.0. Использование profile переопределяет aws_access_key, aws_secret_key и security_token, и поддержка их одновременного указания вместе с profile устарела. aws_access_key, aws_secret_key и security_token будут взаимно исключать друг друга с profile после 2022-06-01. Псевдонимы: aws_profile | |
| 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. Если установлен параметр profile, этот параметр игнорируется. Одновременное указание параметров security_token и profile устарело, и эти параметры будут взаимно исключать друг друга после 2022-06-01. Псевдонимы: aws_security_token, access_token | |
| validate_certs логический тип |
| Если установлено значение «нет», SSL-сертификаты не будут проверяться для версий boto >= 2.6.0. |
Примечания
Примечание
- Если параметры не заданы в модуле, можно использовать следующие переменные среды в порядке убывания приоритета
AWS_URLилиEC2_URL,AWS_PROFILEилиAWS_DEFAULT_PROFILE,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,AWS_CA_BUNDLE - Ansible использует конфигурационный файл boto (обычно ~/.boto), если учетные данные не предоставлены. См. https://boto.readthedocs.io/en/latest/boto_config_tut.html
-
AWS_REGIONилиEC2_REGIONобычно используется для указания региона AWS, когда это необходимо, но его также можно настроить в файле конфигурации boto
Примеры
# practical use case - dynamically de-registering and re-registering nodes
- name: Get EC2 Metadata
amazon.aws.ec2_metadata_facts:
- name: Get initial list of target groups
delegate_to: localhost
community.aws.elb_target_info:
instance_id: "{{ ansible_ec2_instance_id }}"
region: "{{ ansible_ec2_placement_region }}"
register: target_info
- name: save fact for later
ansible.builtin.set_fact:
original_tgs: "{{ target_info.instance_target_groups }}"
- name: Deregister instance from all target groups
delegate_to: localhost
community.aws.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
community.aws.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
community.aws.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
community.aws.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"
ansible.builtin.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 string | если state!=present | описание состояния целевого объекта Пример: ['Процесс дерегистрации целевого объекта в процессе'] | |||
| reason string | если state!=healthy | код причины состояния целевого объекта Пример: ['Процесс дерегистрации целевого объекта в процессе'] | |||
| state string | всегда | состояние работоспособности Пример: ['healthy', 'draining', 'initial', 'unhealthy', 'unused', 'unavailable'] | |||
| target_id string | всегда | идентификатор целевого объекта, относящийся к этому экземпляру Пример: ['i-deadbeef', '1.2.3.4'] | |||
| target_port string | всегда | порт, на котором прослушивает этот целевой объект Пример: [80] | |||
Авторы
- Yaakov Kuperman (@yaakov-github)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/aws/elb_target_info_module.html