Рейтинг:1

Ошибка цикла Terraform с экземпляром AWS EC2, томом и файлом шаблона

флаг it

Не могли бы вы помочь объяснить и обойти эту ошибку?

У меня есть следующая программа TF для экземпляра с томом EBS и файлом шаблона, использующим этот идентификатор тома:

ресурс "aws_instance" "edge1" {

  instance_type = "t3a.micro" 

  ами = data.aws_ami.ubuntu.id
  key_name = "озонм"

  £ корневое блочное устройство 
  корневое_блок_устройство {
    объем_размер = 10
  }

  user_data = data.template_file.user_data_edge1.рендеринг

}
£ Конец ресурса "aws_instance" "edge1" 

£
₽ EBS для дома
£
ресурс "aws_ebs_volume" "дома" {
  зона доступности = aws_instance.edge1.зона доступности
  размер = 1
}

ресурс "aws_volume_attachment" "дома-том-приложение" {
  имя_устройства = "/dev/xvdf"
  instance_id = aws_instance.edge1.id
  Volume_id = aws_ebs_volume.homes.id
}

данные "template_file" "user_data_edge1" {  
  шаблон = файл ("метаданные-edge1.yml", {vol_id = aws_ebs_volume.homes.id})
}

Итак, это дает мне ошибку цикла:

 Ошибка: Цикл: data.template_file.user_data_edge1, aws_instance.edge1, aws_ebs_volume.homes

пока думаю не должно. Я знаю, что такое циклическая зависимость, когда первый объект ссылается на второй, а второй ссылается на первый. Но я думаю, что в этом случае все в порядке со следующим порядком:

  • том создан
  • файл шаблона отображается с использованием идентификатора тома
  • экземпляр создается с файлом шаблона для user_data
  • том прикреплен к экземпляру

Но график TF показывает, что инстанс зависит от тома:

график ТФ

Итак, почему это происходит и как я могу использовать идентификатор тома в файле шаблона для экземпляра?

Заранее спасибо!

флаг jp
Вероятно, цикл связан с использованием aws_instance.edge1.availability_zone в определении aws_ebs_volume.homes.
Artem Trunov avatar
флаг it
Нет, это не имело значения, когда я пытался.
Рейтинг:1
флаг it

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

ресурс "aws_instance" "edge1" {

 зависит от [
    aws_ebs_volume.homes
 ]

В этом случае также доступность_зоны в aws_ebs_volume.homes не должна ссылаться на экземпляр.

Кроме того, использование данные для создания шаблона не требуется, можно поместить шаблон прямо в тело определения ресурса aws_instance:

user_data = файл шаблона (...)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.