- เมื่อต้องสร้างโครงสร้างพื้นฐานบนคลาวด์ หากคำนึงถึงการลดต้นทุน ความเร็วในการปรับใช้ ความสม่ำเสมอ ความเสถียร และการนำกลับมาใช้ซ้ำ การใช้เครื่องมือ IaC จะเหมาะกว่าการสร้างผ่านเว็บคอนโซล
- Terraform เป็นโอเพนซอร์ส และเป็นหนึ่งในเครื่องมือ IaC ที่มีการใช้งานมากที่สุด
- หากต้องการเขียนโค้ด Terraform ให้มีประสิทธิภาพและได้ผลดี สิ่งสำคัญคือการใช้ความสามารถที่ Terraform มีให้อย่างเหมาะสม
- ลูปใน Terraform
- โดยทั่วไปภาษาเชิงประกาศจะไม่มีลูป แต่ใน Terraform มีฟังก์ชันหลากหลายที่รองรับการใช้งานลูปได้
- ลูปที่ใช้กันบ่อย ได้แก่
count, for_each
- พารามิเตอร์
count: วนซ้ำรีซอร์สและโมดูล
- นิพจน์
for_each: วนซ้ำรีซอร์ส บล็อกอินไลน์ภายในรีซอร์ส และโมดูล
- วิธีใช้ลูปแต่ละแบบ
count: เหมาะเมื่อรีซอร์สที่ต้องการสร้างแทบจะเหมือนกันทั้งหมดและไม่มีการเปลี่ยนแปลง ทำให้สร้างได้รวดเร็วและกระชับ
for_each: เหมาะกับรีซอร์สที่มีชื่อเฉพาะ มีข้อมูลเฉพาะของตัวเอง หรือเป็นรีซอร์สที่ไม่ควรถูกสร้างใหม่ ช่วยให้สร้างและแก้ไขได้อย่างปลอดภัย
- Count
- พารามิเตอร์
count รับค่าเป็นจำนวนเต็ม และใช้วนซ้ำเพื่อสร้างทั้งรีซอร์สหรือโมดูล
- เมื่อกำหนดด้วย
count จะสามารถใช้ count.index เพื่อเข้าถึงดัชนีที่สร้างจาก count ได้
- ข้อจำกัดของ Count
count จะวนซ้ำทั้งรีซอร์ส แต่จะไม่วนซ้ำบล็อกอินไลน์ที่อยู่ภายในรีซอร์สนั้น
- หากลบค่าตรงกลางของรีซอร์สที่สร้างด้วย
count ค่าทั้งหมดที่อยู่ถัดไปจะถูกลบแล้วสร้างใหม่ แม้ผลลัพธ์สุดท้ายจะเหมือนเดิม แต่หากเป็นรีซอร์สที่ไม่ควรถูกสร้างใหม่ก็อาจเกิดปัญหาได้
- For_each
- นิพจน์
for_each ใช้วนซ้ำ list, set, map เพื่อสร้างทั้งรีซอร์ส บล็อกอินไลน์ภายในรีซอร์ส และโมดูล
- เมื่อกำหนดด้วย
for_each จะสามารถใช้ each.key และ each.value เพื่อเข้าถึงคีย์และค่าที่เกี่ยวข้องได้
- เมื่อนำ
for_each ไปใช้กับรีซอร์ส จะไม่รองรับ list
- ใน collection จะกำหนด
set หรือ map ที่ต้องการวนซ้ำ และใน Config สามารถใช้ each.value เพื่อนำคีย์และค่าที่กำหนดไว้ใน Collection มาใช้ได้
ยังไม่มีความคิดเห็น