#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, который мы использовали. Извините, что создаю путаницу. Вероятно, следует скорректировать название