Прикрепите существующие тома EBS для запуска конфигурации в Terraform

avatar
Dave Michaels
1 июля 2021 в 17:22
528
1
1

У меня есть 3 существующих тома EBS, которые я пытаюсь подключить к экземплярам, ​​созданным с помощью групп автомасштабирования. Ниже приведен код Terraform о том, как определяются тома EBS:

.

Тома EBS

resource "aws_ebs_volume" "volumes" {
  count             = "${(var.enable ? 1 : 0) * var.number_of_zones}"
  availability_zone = "${element(var.azs, count.index)}"
  size              = "${var.volume_size}"
  type              = "${var.volume_type}"

  lifecycle {
    ignore_changes = [
      "tags",
    ]
  }

  tags {
    Name = "${var.cluster_name}-${count.index + 1}"
  }
}

Я планирую сначала использовать утилиту импорта Terraform, чтобы можно было управлять томами в Terraform. Без этого импорта Terraform предполагает, что я пытаюсь создать новые тома EBS, которые мне не нужны.

Кроме того, я обнаружил этот ресурс aws_volume_attachment для присоединения этих томов к экземплярам. Я изо всех сил пытаюсь определить, какое значение поставить в качестве instance_id в этом ресурсе:

Вложение тома

resource "aws_volume_attachment" "volume_attachment" {
  count = length("${aws_ebs_volume.volumes.id}")
  device_name = "/dev/sdf"
  volume_id   = aws_ebs_volume.volumes.*.id
  instance_id = "instance_id_from_autoscaling_group"
}

Кроме того, в блоке конфигурации запуска есть блок ebs_volume_device, нужно ли что-то еще включать в этот блок? Любые советы по этому поводу будут полезны, так как у меня проблемы.

ebs_block_device {
device_name = "/dev/sdf"
no_device   = true

Источник
Marcin
28 октября 2021 в 23:54
0

Как прошло? Все еще непонятно, что можно сделать?

Dave Michaels
15 ноября 2021 в 03:53
1

Мои извинения, я пропустил это. В итоге я решил эту проблему, создав список и зациклив его на ресурсе тома EBS. В итоге это помогло мне подключить существующие тома.

Ответы (1)

avatar
Marcin
2 июля 2021 в 01:05
0

Я пытаюсь определить, какое значение поставить в качестве instance_id в этом ресурсе

Если вы создаете ASG с помощью TF, у вас нет доступа к идентификаторам экземпляров. Причина в том, что ASG обрабатывается как единое целое, а не как отдельные экземпляры.

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

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