Điểm:1

Lỗi chu trình Terraform với tệp mẫu, khối lượng và phiên bản AWS EC2

lá cờ it

Bạn có thể vui lòng giúp giải thích và khắc phục lỗi này không?

Tôi có chương trình TF sau cho một phiên bản với tệp mẫu và ổ đĩa EBS sử dụng id ổ đĩa đó:

tài nguyên "aws_instance" "edge1" {

  instance_type = "t3a.micro" 

  ami = data.aws_ami.ubuntu.id
  key_name = "ozonm"

  £ thiết bị chặn gốc 
  root_block_device {
    volume_size = 10
  }

  user_data = data.template_file.user_data_edge1.rendered

}
£ Kết thúc tài nguyên "aws_instance" "edge1" 

£
£ EBS cho gia đình
£
tài nguyên "aws_ebs_volume" "homes" {
  Availability_zone = aws_instance.edge1.availability_zone
  kích thước = 1
}

tài nguyên "aws_volume_attachment" "homes-volume-attachment" {
  device_name = "/dev/xvdf"
  instance_id = aws_instance.edge1.id
  volume_id = aws_ebs_volume.homes.id
}

dữ liệu "template_file" "user_data_edge1" {  
  template = file("metadata-edge1.yml", { vol_id = aws_ebs_volume.homes.id })
}

Vì vậy, điều này mang lại cho tôi một lỗi chu kỳ:

 Lỗi: Chu kỳ: data.template_file.user_data_edge1, aws_instance.edge1, aws_ebs_volume.homes

trong khi tôi nghĩ là không nên. Tôi biết sự phụ thuộc vòng tròn là gì, khi các đối tượng đầu tiên đề cập đến đối tượng thứ hai, trong khi đối tượng thứ hai đề cập đến đối tượng thứ nhất. Nhưng tôi nghĩ nó hoàn toàn ổn trong trường hợp này với thứ tự sau:

  • khối lượng được tạo ra
  • tệp mẫu được hiển thị bằng id âm lượng
  • phiên bản được tạo bằng tệp mẫu cho user_data
  • khối lượng được đính kèm với ví dụ

Nhưng biểu đồ TF cho thấy rằng phiên bản phụ thuộc vào âm lượng:

biểu đồ TF

Vậy tại sao điều này lại xảy ra và làm cách nào tôi có thể sử dụng id ổ đĩa trong tệp mẫu chẳng hạn?

Cảm ơn trước!

lá cờ jp
Có thể chu kỳ là do sử dụng `aws_instance.edge1.availability_zone` trong định nghĩa `aws_ebs_volume.homes`.
Artem Trunov avatar
lá cờ it
Không, nó không thành vấn đề khi tôi cố gắng.
Điểm:1
lá cờ it

Ok, sau một số thử nghiệm, tôi thấy rằng giải pháp là sử dụng phụ thuộc siêu đối số.

tài nguyên "aws_instance" "edge1" {

 phụ thuộc [
    aws_ebs_volume.homes
 ]

Trong trường hợp này, Availability_zone trong aws_ebs_volume.homes cũng không được tham chiếu lại phiên bản.

Ngoài ra, việc sử dụng dữ liệu để tạo mẫu là không cần thiết, người ta có thể đặt mẫu ngay trong phần định nghĩa tài nguyên aws_instance:

user_data = tệp mẫu (...)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.