community.aws.elb_target_facts – Сбор информации о целевых группах, к которым относится целевой сервер.
Примечание
Этот плагин является частью коллекции community.aws (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install community.aws.
Для использования в playbook укажите: community.aws.elb_target_facts.
Новое в версии 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. Для модулей 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 для вывода общего списка, созданного во время выполнения playbook. Переменная среды 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 security token. Если не задан, используется значение переменной окружения 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_facts_module.html