Я часто создаю классические балансировщики нагрузки с помощью Terraform. Выходные данные TF этих проектов должны включать (текущий) IP-адрес балансировщиков нагрузки. Для этого в моем коде есть следующее:
data "dns_a_record_set" "lb_dns_a" {
host = "${aws_elb.myelb.dns_name}"
}
output "load_balancer_ip" {
value = "${data.dns_a_record_set.lb_dns_a.addrs}"
}
Это работает, за исключением первоначального создания ELB. Чаще всего между созданием ELB и его DNS-именем возникает большая задержка, поэтому я получаю сообщение об ошибке, что DNS-имя не может быть разрешено. Через пару секунд / минут каждый terraform refresh; terraform output;
показывает правильный текущий IP-адрес ELB. Я предполагаю, что мне нужно ввести какой-то таймер удержания, чтобы дать время записи DNS, чтобы стать доступным, при первом развертывании инфраструктуры.
Как я могу реализовать такой таймер удержания, чтобы создать ELB, а затем TF ждет (скажем) 2 минуты, прежде чем он создаст data.dns_a_record_set.lb_dns_a
?
Лучшее решение - дождаться успешного разрешения имени, прежде чем продолжить.
П.С .: У меня есть эта проблема только с ELB. ALB и NLB кажутся более быстрыми, или это просто занимает достаточно много времени для создания слушателей и целевых групп, чтобы их DNS-имена всегда были разрешаемы к моменту создания выходных данных.