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, используемого для проверки SSL-сертификатов. Используется только для модулей на основе boto3. Примечание: Файл CA Bundle читается со стороны модуля и, возможно, должен быть явно скопирован с контроллера, если он не запускается локально. | |
| aws_config словарь | Словарь для изменения конфигурации botocore. Параметры можно найти по адресу https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config. Для модулей boto используется только ключ 'user_agent'. Дополнительные параметры конфигурации boto см. по адресу http://boto.cloudhackers.com/en/latest/boto_config_tut.html#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 строка | всегда | ARN группы целевых ресурсов Пример: ['arn:aws:elasticloadbalancing:eu-west-1:111111111111:targetgroup/target-group/deadbeefdeadbeef'] | |||
| target_group_type строка | всегда | Тип целевого ресурса для этой группы Пример: ['ip', 'instance'] | |||
| targets complex | всегда | Список целевых ресурсов, которые указывают на этот идентификатор экземпляра | |||
| target_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 строка | всегда | идентификатор целевого ресурса, относящийся к этому экземпляру Пример: ['i-deadbeef', '1.2.3.4'] | |||
| target_port строка | всегда | порт, на котором прослушивает этот целевой ресурс Пример: [80] | |||
Авторы
- Яаков Куперман (@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.10/collections/community/aws/elb_target_info_module.html