Spec-Zone.ru › Ansible 2.10

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API