#amazon-web-services #ta&s #terraform #aws-auto-scalin&
#amazon-веб-службы #Теги #terraform #aws-автоматическое масштабирование
Вопрос:
Это то, что я пытаюсь сделать. У меня есть 2 группы автоматического масштабирования, созданные с помощью Terraform. Сначала запускаются 3 экземпляра EC2 в трех разных зонах доступности с общедоступными IP-адресами. Другая группа автоматического масштабирования запускает 3 экземпляра EC2 в трех разных зонах доступности с частными IP-адресами. Я пытаюсь настроить уникальный тег «Name» для каждого экземпляра. В Terraform я вижу, что ресурс автоматического масштабирования имеет блок тегов, но при apply один и тот же тег применяется ко всем 3 экземплярам. Кроме того, я попытался настроить свой код таким образом, чтобы одна группа автоматического масштабирования могла запускать все мои экземпляры (как общедоступные, так и частные), но у меня возникли проблемы с циклическим использованием выражения ‘for’ в моем операторе vpc_zone_identifier . Эта проблема вынуждает меня создать вторую группу автоматического масштабирования для частных экземпляров. Были бы полезны любые советы по объединению этих групп автоматического масштабирования и пометке каждого экземпляра уникальным тегом.
resource "aws_autoscalin&_&roup" "public" {
name = "${var.main_as}-Public"
launch_confi&uration = aws_launch_confi&uration.main.id
vpc_zone_identifier = [
for subnet in aws_subnet.public : subnet.id
]
min_size = 3
max_size = 3
}
resource "aws_autoscalin&_&roup" "private" {
name = "${var.main_as}-Private"
launch_confi&uration = aws_launch_confi&uration.main.id
vpc_zone_identifier = [
for subnet in aws_subnet.private : subnet.id
]
min_size = 3
max_size = 3
}
Ответ №1:
При использовании группы автоматического масштабирования вам не следует пытаться генерировать уникальные имена для всех экземпляров, фактически это приводит к методологии «домашние животные против крупного рогатого скота«. Благодаря присвоению имен ресурсам они становятся ценными и могут привести к созданию проектов, в которых у вас будет единственная точка отказа.
На практике это может быть сложно для определенных областей (таких как базы данных), но вы должны попытаться сделать свою архитектуру неизменяемой, особенно в группе автоматического масштабирования, в которой экземпляры могут быть заменены (даже если у вас минимальный и максимальный размер одинаков, любые сбои базового хоста приведут к запуску нового экземпляра для замены).
Благодаря неизменяемости вашей инфраструктуры ваша архитектура будет более устойчивой к неизвестным событиям и обеспечит применение лучших практик при сборке серверов.
Если вам нужен идентификатор для экземпляра, вместо использования тега я бы рекомендовал использовать идентификатор экземпляра, поскольку он всегда будет уникальным для ваших хостов.
В противном случае, если вы хотите по-прежнему использовать группу автоматического масштабирования с уникальными тегами имен для узлов, вам нужно будет создать событие для него во время запуска узла. Затем для этого потребуется запустить лямбда-выражение, которое программно обновит экземпляр EC2 и присвоит ему уникальное имя.
Комментарии:
1. Спасибо. Имеет смысл.
2. Без проблем, рад, что смог помочь 🙂