Здесь я пытаюсь выполнить перечисленные ниже действия
- Отменить регистрацию экземпляра в балансировщике нагрузки приложения
- Развернуть приложение
Вариант использования - добавить обратно снятый с регистрации экземпляр в те же целевые группы ALB, откуда он был удален. При отмене регистрации экземпляра я сохраняю ARN целевой группы в {{ my_target_arn }}
, а позже использую его в другой роли, чтобы зарегистрировать тот же экземпляр в целевых группах.
Ниже приведен код для отмены регистрации экземпляра из ALB :
---
- name: Get EC2 instance ID
ec2_instance_info:
filters:
private-ip-address: "{{ ansible_host }}"
register: ec2_details
- name: Get list of target groups with the EC2
delegate_to: localhost
elb_target_info:
instance_id: "{{ ec2_details.instances[0].instance_id }}"
register: target_info
- name: Deregister the EC2
delegate_to: localhost
elb_target:
target_group_arn: "{{ item.target_group_arn }}"
target_id: "{{ ec2_details.instances[0].instance_id }}"
deregister_unused: yes
target_status_timeout: 10
state: absent
with_items: "{{ target_info.instance_target_groups }}"
register: detached_details
when: target_info != ""
- set_fact:
my_target_arn: "{{ item.target_group_arn }}"
with_items: "{{ target_info.instance_target_groups }}"
when: target_info != ""
Ниже приведен код для обратного добавления экземпляра:
---
- name: Get EC2 instance ID
ec2_instance_info:
filters:
private-ip-address: "{{ ansible_host }}"
register: ec2_details
- name: Register the EC2
delegate_to: localhost
elb_target:
target_group_arn: "{{ item }}"
target_id: "{{ ec2_details.instances[0].instance_id }}"
deregister_unused: yes
target_status_timeout: 10
state: present
with_items: "{{ my_target_arn }}"
register: attached_details
when: my_target_arn != ""
Код Playbook:
---
- name: Check EC2 details
hosts: appserver
roles:
- roles/ec2_deregister
- roles/deploy_application
- roles/ec2_register
Проблема в том, что мой {{ ansible_host }}
связан с несколькими целевыми группами. Таким образом, при отмене регистрации экземпляра он отменяет регистрацию экземпляра в этих нескольких целевых группах. Однако при повторной регистрации экземпляра он только добавляет его обратно в одну целевую группу (первую, которую он получает).
Так что в основном я хочу set_fact
с переменной списка, которая может или может не иметь нескольких значений (это может быть одно значение или список значений). Подскажите, пожалуйста, как set_fact
со списком переменных.