การใช้ Terraform Loop อย่างมีประสิทธิภาพ
(insight.infograb.net)- เมื่อต้องสร้างโครงสร้างพื้นฐานบนคลาวด์ หากคำนึงถึงการลดต้นทุน ความเร็วในการปรับใช้ ความสม่ำเสมอ ความเสถียร และการนำกลับมาใช้ซ้ำ การใช้เครื่องมือ 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 มาใช้ได้
- นิพจน์
ยังไม่มีความคิดเห็น