ansible community.aws.ec2_elb не работает

#amazon-web-services #ansible #amazon-elb

Вопрос:

ПРАВКА: Я думаю, я использовал неправильный модуль, см. Мой собственный ответ.

Я пытаюсь запустить этот модуль ansible:

https://docs.ansible.com/ansible/latest/collections/community/aws/ec2_elb_module.html

Я запускаю его так, в основном следуя примеру:

 ---
- hosts: all 
  #gather_facts: no 

  pre_tasks:

  - name: Instance De-register
    community.aws.ec2_elb:
      aws_access_key: <key>
      aws_secret_key: <secret>
      instance_id: "{{ id }}"
      state: absent
      region: us-east-1
    register: dereg

  - name: print output
    debug: 
      var: dereg
 

Ответ, который я получаю:

 ok: [<ip>] => {
    "dereg": {
        "ansible_facts": {
            "ec2_elbs": []
        },
        "changed": false,
        "failed": false
    }
}
 

Идентификатор экземпляра находится в файле инвентаризации и является идентификатором экземпляра AWS.
Файл инвентаризации выглядит следующим образом:

 [hosts]
<ip> id=i-<AWS-ID>
<ip> id=i-<AWS-ID>
 

И я вызываю сценарий: ansible-playbook -i inventory deregister.yml

Узлы существуют, запущены и подключены к целевой группе балансировщика нагрузки, прослушиватель настроен, и целевая группа считает узлы исправными.

Документации не так много, и я понятия не имею, почему это не работает.

Чего я хочу добиться, так это того, чтобы при обновлении своего узла он сначала отменял его регистрацию в балансировщике нагрузки AWS, так как требуется x секунд, пока балансировщик нагрузки не увидит цель как неработоспособную и не направит к ней запросы на это время, что приведет к сбою.

Комментарии:

1. Ну, это делает то, что ты хочешь, не так ли? "ec2_elbs": [] заканчивается пустым, потому что вы заявили, что хотите, чтобы существующий балансировщик нагрузки был state: absent . Ваша задача не провалилась: "failed": false , хотя она ничего не сделала: "changed": false , вероятно , потому, что вы удалили балансировщик нагрузки уже в предыдущих испытаниях.

2. а? Балансировщик нагрузки все еще там, и целевая группа по-прежнему подключена ко всем узлам. Ни один экземпляр не был снят с регистрации… Я ожидаю здесь чего-то неправильного?

3. Из краткого описания: Этот модуль отменяет регистрацию или регистрирует экземпляр AWS EC2 из ELBS, к которому он принадлежит. Вы пытаетесь отменить регистрацию EC2 или что-то еще? Ответ из задач, похоже, говорит о том, что к этому EC2 не подключен ELB, следовательно, пустой список, возвращенный фактом.

4. Я пытаюсь отменить регистрацию 2 экземпляров ec2, которые зарегистрированы в качестве целевых для целевой группы балансировщика нагрузки. на AWS

5. Ммм, я бы ожидал, что целевая группа будет вашей проблемой. Эта задача состоит в том, чтобы отключить ELB от EC2, которые подключены напрямую. Вам следует попробовать docs.ansible.com/ansible/latest/collections/community/aws/. … Похоже, вы можете действовать по целям там: docs.ansible.com/ansible/latest/collections/community/aws/…

Ответ №1:

Я думаю, что теперь у меня это получилось — с помощью другого модуля.

Я предполагаю, что этот модуль работает только с классическим LB (или чем-то в этом роде).

Используя community.aws.elb_target модуль, я заставил его работать с AWS ALB, который мы использовали. Извините, что создаю путаницу. Вероятно, следует скорректировать название