Score:1

ข้อผิดพลาดรอบ Terraform กับอินสแตนซ์ AWS EC2, ไดรฟ์ข้อมูลและไฟล์เทมเพลต

ธง it

คุณช่วยอธิบายและแก้ไขข้อผิดพลาดนี้ได้ไหม

ฉันมีโปรแกรม TF ต่อไปนี้สำหรับอินสแตนซ์ที่มีไดรฟ์ข้อมูล EBS และไฟล์เทมเพลตโดยใช้รหัสไดรฟ์ข้อมูลนั้น:

ทรัพยากร "aws_instance" "edge1" {

  instance_type = "t3a.micro" 

  ami = data.aws_ami.ubuntu.id
  key_name = "โอโซน"

  £ อุปกรณ์รูทบล็อก 
  root_block_device {
    ปริมาตร_ขนาด=10
  }

  user_data = data.template_file.user_data_edge1.rendered

}
£ สิ้นสุดทรัพยากร "aws_instance" "edge1" 

€
£ EBS สำหรับบ้าน
€
ทรัพยากร "aws_ebs_volume" "บ้าน" {
  vailability_zone = aws_instance.edge1.availability_zone
  ขนาด = 1
}

ทรัพยากร "aws_volume_attachment" "homes-volume-attachment" {
  device_name = "/dev/xvdf"
  instance_id = aws_instance.edge1.id
  volume_id = aws_ebs_volume.homes.id
}

ข้อมูล " template_file " " user_data_edge1 " {  
  แม่แบบ = ไฟล์ ("metadata-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 flag
วงจรน่าจะเกิดจากการใช้ `aws_instance.edge1.availability_zone` ในนิยาม `aws_ebs_volume.homes`
Artem Trunov avatar
it flag
ไม่มี มันไม่สำคัญเมื่อฉันพยายาม
Score:1
ธง it

ตกลง ดังนั้นหลังจากการทดลองบางอย่าง ฉันพบว่าวิธีแก้ปัญหาคือใช้ ขึ้นอยู่กับ เมตาอาร์กิวเมนต์

ทรัพยากร "aws_instance" "edge1" {

 ขึ้นอยู่กับ [
    aws_ebs_volume.homes
 ]

ในกรณีนี้availability_zone ใน aws_ebs_volume.homes จะต้องไม่อ้างอิงกลับไปที่อินสแตนซ์

นอกจากนี้ การใช้ ข้อมูล สำหรับการสร้างเทมเพลตนั้นไม่จำเป็น เราสามารถวางเทมเพลตลงในเนื้อหาของข้อกำหนดทรัพยากร aws_instance ได้โดยตรง:

user_data = templatefile(...)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา