Fix lỗi Network interfaces and an instance-level subnet ID may not be specified on the same request khi launch EC2 instance từ launch template
Nó cứ chửi mình là “Network interfaces and an instance-level subnet ID may not be specified on the same request”, comment thử subnet thì nó chửi là mày phải cung cấp cho tao subnet thì mới tạo interface, comment thử network interface thì OK chạy, nhưng đó không phải mục đích vì mình muốn set interface.
Nếu bạn đang trong tình trạng no hope như mình từng gặp bên trên, thì lời khuyên cho bạn là check thử biến associate_public_ip_address xem khai báo có sai không. Mình từng khai báo nhầm default = null thay vì default = false (hoặc true) và mất luôn buổi chiều để debug :v
Cụ thể thì đây là logic đúng
associate_public_ip_address = !var.launch_from_launch_template ? var.associate_public_ip_address : false
còn đây sẽ sai:
associate_public_ip_address = !var.launch_from_launch_template ? var.associate_public_ip_address : null
Bonus:
Kể cho mọi người thêm 1 case vui vui về lifecycle ignore_changes của Terraform:
Mình từng gặp case muốn ignore cái source code hash của Lambda trong Terraform vì sau lần deploy đầu tiên, là tôi sẽ dùng tool khác deploy code lambda, nhưng không tài nào ignore được dù khai báo explicit trong block resource Lambda rồi.
Sau 7749 lần đọc code toét mắt, mình mới nhận ra 1 điều: Nguyên nhân gõ hẳn trong code là ignore change nhưng nó không ignore là do tôi có output source code hash ở trong phần khai báo output của terraform :D Do đó, nếu muốn ignore 1 cái change, thì mọi người nhớ đừng output cái mọi người ignore nha, nếu không sẽ không ignore được đâu!