Динамическое именование экземпляров AWS EC2, запущенное Terraform aws_autoscaling_group - PullRequest
0 голосов
/ 24 мая 2018

Я успешно создал группу автоматического масштабирования, используя Terraform.Теперь я хотел бы найти способ динамического именования предоставленных экземпляров на основе значения индекса.

Для типа aws_instance это можно легко сделать с помощью:

resource "aws_instance" "bar" {
  count = 3

  tags {
    Name     = "${var.instance_name_gridNode}${count.index + 1}"
    App-code = "${var.app-code}"
    PC-code  = "${var.pc-code}"
  }
}

Это будетрезультат в 3 экземплярах с именем:

1) Node1

2) Node2

3) Node3

Однако, как aws_autoscaling_group динамически предоставляется (для обоихмасштабирование в и из ситуаций) как можно управлять соглашением об именовании предоставленных экземпляров?

resource "aws_autoscaling_group" "gridrouter_asg" {
  name                      = "mygridrouter"
  launch_configuration      = "${aws_launch_configuration.gridGgr_lcfg.id}"
  min_size                  = 1
  max_size                  = 2
  health_check_grace_period = 150
  desired_capacity          = 1
  vpc_zone_identifier       = ["${var.subnet_id}"]
  health_check_type         = "EC2"

  tags = [
    {
      key                 = "Name"
      value               = "${var.instance_name_gridGgr_auto}"
      propagate_at_launch = true
    },
  ]
}

Ответы [ 2 ]

0 голосов
/ 17 июля 2019

Некоторые люди используют группы автоматического масштабирования, чтобы защитить экземпляры от прерывания при обновлении стека (например, обновление стека облачной информации).Таким образом, они не используют автоматическое масштабирование, как предполагалось.Экземпляры не являются одноразовыми.Это то, что делает проект / продукт, над которым я сейчас работаю.

0 голосов
/ 24 мая 2018

Группы автоматического масштабирования AWS могут быть помечены как многие ресурсы, и с помощью флага propagate_at_launch эти теги также будут переданы в создаваемые им экземпляры.

К сожалению, они полностью статичны, и сама ASG не имеетспособ помечать экземпляры по-разному.Кроме того, шкала по умолчанию в политике не будет сначала удалять самые новые экземпляры, поэтому даже если вы пометили свои экземпляры как Node1, Node2, Node3, а затем, когда группа автомасштабирования масштабировалась внаиболее вероятно (в зависимости от критериев) удалить Node1, оставив вас с Node2 и Node3.Хотя можно изменить политику завершения на NewestInstance, чтобы она удаляла Node3, это вряд ли будет оптимальным масштабом в политике.

Я бы спросил, почему вы чувствуете, что должны использовать экземпляры ASGотличаться друг от друга и, возможно, переосмыслить, как вы управляете своими экземплярами, когда они более эфемерны, как это обычно бывает в современных облаках, но в особенности при использовании групп автоматического масштабирования.

Если вы действительно хотите по-разному помечать экземпляры дляпо какой-то конкретной причине вы могли бы заставить ASG не распространять тег Name при запуске на экземпляры, а затем запускать лямбда-функцию для события масштабирования (через ловушку жизненного цикла или событие Cloudwatch), чтобы определить значение тега для использования изатем пометьте экземпляр им.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...