ควรคาดว่าจะเจอคำถามอะไรบ้างในการสัมภาษณ์ Terraform?
โดย Aaron Cao · อัปเดตเมื่อ

คาดว่าจะเจอคำถาม 4 กลุ่ม ได้แก่ เวิร์กโฟลว์หลัก (init, plan, apply, destroy), state (remote backend, การล็อก, ค่าที่ละเอียดอ่อน), โครงสร้างโค้ด (โมดูล ตัวแปร workspace และ provider) และสถานการณ์ เช่น drift, apply ล้มเหลวกลางคัน หรือการนำเข้าทรัพยากรที่สร้างด้วยตนเอง ผู้สัมภาษณ์จะประเมินเหตุผลเบื้องหลังแต่ละตัวเลือก
ผู้สัมภาษณ์ตรวจสอบพื้นฐาน Terraform อะไรก่อน?
การสัมภาษณ์ Terraform ส่วนใหญ่เริ่มจากเวิร์กโฟลว์ แล้วเจาะลึกอย่างรวดเร็วว่าเบื้องหลังเกิดอะไรขึ้น คุณควรอธิบายวงจรการทำงานได้โดยไม่ต้องดูโน้ต: terraform init ดาวน์โหลด provider และกำหนดค่า backend; terraform plan เปรียบเทียบการกำหนดค่าที่ต้องการกับไฟล์ state และทรัพยากรจริง จากนั้นแสดงการดำเนินการที่จะทำ; terraform apply ดำเนินการตาม plan นั้น; terraform destroy ลบสิ่งที่การกำหนดค่าจัดการอยู่ คำถามต่อยอดแรกแทบทุกครั้งคือเหตุใด plan กับ apply จึงแยกเป็นคนละขั้นตอน คำตอบคือเพื่อการตรวจสอบและความปลอดภัย เพราะสามารถตรวจทาน อนุมัติ และบันทึก plan ก่อนที่จะมีสิ่งใดเปลี่ยนแปลงได้
- Provider ปลั๊กอินที่สื่อสารกับ API เช่น AWS, Azure, Google Cloud หรือ Kubernetes คำถามต่อยอด: เหตุใดจึงต้องตรึงเวอร์ชันของ provider?
- ทรัพยากรและแหล่งข้อมูล ทรัพยากรคือสิ่งที่ Terraform สร้างและเป็นผู้ดูแล ส่วนแหล่งข้อมูลอ่านสิ่งที่มีอยู่แล้วและไม่ได้อยู่ภายใต้การจัดการ
- ตัวแปร local และ output ค่าอินพุต ค่าที่คำนวณได้ และค่าที่ส่งออก คำถามต่อยอด: จะป้องกันไม่ให้ความลับปรากฏในผลลัพธ์ของ plan ได้อย่างไร?
- กราฟการพึ่งพา Terraform จัดลำดับการดำเนินการจากการอ้างอิงระหว่างทรัพยากร ส่วน
depends_onมีไว้สำหรับการพึ่งพาที่กราฟมองไม่เห็น
ตอบโดยระบุว่าแต่ละคำสั่งอ่านและเขียนอะไร ผู้สมัครที่บอกว่า plan เป็นแบบอ่านอย่างเดียว ส่วน apply เปลี่ยนแปลงทั้งโครงสร้างพื้นฐานและ state แสดงให้เห็นแล้วว่าเข้าใจโมเดลนี้
ควรเตรียมคำถามเรื่อง state และโมดูลอะไรบ้าง?
คุณรู้ว่า state สำคัญ และสงสัยว่าผู้สัมภาษณ์จะค้นหาขอบเขตความเข้าใจของคุณ ซึ่งก็สมเหตุสมผล ส่วนนี้จึงครอบคลุมคำถามที่ไปถึงขอบเขตนั้น รวมถึงองค์ประกอบของคำตอบที่ครบถ้วน
- State อยู่ที่ไหน และเหตุใดจึงไม่ควรเก็บไว้ในเครื่อง? Remote backend เช่น bucket สำหรับจัดเก็บอ็อบเจ็กต์ Terraform Cloud หรือฐานข้อมูล ทำหน้าที่เป็นแหล่งข้อมูลจริงร่วมกัน คำถามต่อยอดคือเรื่องการล็อก: หากคนสองคน apply พร้อมกัน state อาจเสียหาย ดังนั้น backend ที่รองรับการล็อกจะปฏิเสธการทำงานครั้งที่สอง
- ไฟล์ state มีอะไรอยู่บ้าง? แอตทริบิวต์ของทรัพยากร รวมถึงค่าที่คุณอาจถือว่าละเอียดอ่อน ควรตอบว่า state ต้องได้รับการปฏิบัติเหมือนข้อมูลลับ เข้ารหัสขณะจัดเก็บ และควบคุมสิทธิ์เข้าถึง
- โมดูล โมดูลคือชุดทรัพยากรที่นำกลับมาใช้ซ้ำได้ พร้อมอินพุตและ output ของตนเอง ผู้สัมภาษณ์จะถามว่าคุณกำหนดเวอร์ชันโมดูลอย่างไร หลีกเลี่ยงโมดูลที่พยายามทำทุกอย่างได้อย่างไร และ root module ประกอบ child module เข้าด้วยกันอย่างไร
- Workspace เทียบกับการกำหนดค่าแยกกัน Workspace ทำให้การกำหนดค่าหนึ่งชุดมีไฟล์ state ได้หลายไฟล์ คำตอบที่เป็นกับดักคือการมองว่า workspace เป็นคำตอบทั้งหมดสำหรับการจัดการสภาพแวดล้อม โดยทั่วไป production ควรมีการกำหนดค่า backend และข้อมูลประจำตัวเป็นของตนเอง แทนที่จะอาศัยเพียงการสลับ workspace
- ปรับโครงสร้างโดยไม่ทำลาย การเปลี่ยนชื่อทรัพยากรทำให้ Terraform ต้องการทำลายแล้วสร้างใหม่ ควรรู้ว่ามีบล็อก
movedและterraform state mvรวมถึงแต่ละอย่างใช้เพื่ออะไร
หลักปฏิบัติที่ดีสำหรับทุกคำตอบในส่วนนี้คือระบุความล้มเหลวที่แนวทางนั้นช่วยป้องกัน การล็อกป้องกันความเสียหายจากการทำงานพร้อมกัน remote state ป้องกันข้อมูลบนแล็ปท็อปแต่ละเครื่องไม่ตรงกัน และการตรึงเวอร์ชันป้องกันการอัปเกรดโดยไม่คาดคิดระหว่างการ apply ตามปกติ
คำถามเชิงสถานการณ์เป็นอย่างไร?
การสัมภาษณ์ระดับอาวุโสจะเปลี่ยนจากการถามคำนิยามมาเป็นสถานการณ์ ตัวอย่างหนึ่งคือ วิศวกรแพลตฟอร์มที่กำลังสัมภาษณ์ตำแหน่งงานด้านโครงสร้างพื้นฐานในบริษัทฟินเทคได้รับแจ้งว่ามีคนแก้ไข security group ด้วยตนเองผ่านคอนโซลคลาวด์ plan ถัดไปแสดงความแตกต่างที่ไม่มีใครคาดคิด และทีมกังวลกับการ apply คำตอบที่ดีจะระบุว่าสถานการณ์นี้คือ drift อธิบายว่า plan ตรวจพบแล้วจากการ refresh สถานะจริง ตัดสินใจว่าควรเก็บหรือย้อนกลับการเปลี่ยนแปลงด้วยตนเองนั้น และเลือกว่าจะอัปเดตการกำหนดค่าให้ตรงกับความเป็นจริงหรือ apply เพื่อคืนค่าให้เป็นไปตาม state ที่ประกาศไว้ ผู้สัมภาษณ์กำลังฟังการตัดสินใจ ไม่ใช่คำสั่ง
สถานการณ์อื่นที่พบบ่อย ได้แก่ apply ล้มเหลวกลางคันและ state จะมีลักษณะอย่างไรหลังจากนั้น ทรัพยากรที่สร้างขึ้นก่อนมี Terraform และวิธีที่ terraform import นำทรัพยากรเหล่านั้นเข้ามาอยู่ภายใต้การจัดการ ทีมวิศวกรหลายคนและวิธีจัดโครงสร้าง repository, backend และ CI เพื่อให้ plan ทำงานกับ pull request และ apply ทำงานเพียงครั้งเดียว ความลับในตัวแปรและแหล่งที่ควรนำมาใช้แทน รวมถึงการอัปเกรด provider ที่เปลี่ยนพฤติกรรมของทรัพยากร ในทุกกรณี ให้ระบุข้อจำกัด เลือกกลไก และอธิบายต้นทุนที่ตามมา
คุณจะตอบคำถามเหล่านี้ได้ดีขึ้นเมื่อเคยพูดคำตอบออกมาดัง ๆ มาก่อน โหมด สัมภาษณ์จำลอง จะถามคำถามเชิงสถานการณ์พร้อมคำถามต่อยอด และคลังคำถามสำหรับบทบาทและเครื่องมืออื่น ๆ รวบรวมไว้ใน คำถามสัมภาษณ์ตามบทบาทและหัวข้อ
ผู้ช่วยสัมภาษณ์ AI ช่วยในการสัมภาษณ์ Terraform ได้ไหม?
สำหรับช่วงสนทนา ช่วยได้ แต่ควรระบุข้อจำกัดให้ชัดเจน แอปเดสก์ท็อปสำหรับ macOS และ Windows ของ SubcueAI จะรับเสียงของระบบและไมโครโฟนของคุณ พร้อมแสดงคำแนะนำสั้น ๆ ในโอเวอร์เลย์บนเครื่อง ดังนั้นเมื่อผู้สัมภาษณ์ถามว่าการล็อก state ป้องกันอะไร คุณจะเห็นกลไกอยู่ตรงหน้าในขณะที่อธิบาย แผงด้านข้างของส่วนขยายเบราว์เซอร์ทำเช่นเดียวกันสำหรับการประชุมผ่านแท็บเบราว์เซอร์บน Chrome หรือ Edge โดยรับเฉพาะเสียงจากแท็บการประชุม ไม่มีบอตเข้าร่วมสายและไม่มีสิ่งใดถูกแทรกลงในหน้าการประชุม ขั้นตอนการตั้งค่าอยู่ในหน้า บทแนะนำ
กรณีที่ใช้ไม่ได้ ได้แก่ การประเมินที่มีผู้คุมสอบ การบันทึกหน้าจอ แล็ปท็อปที่บริษัทจัดการ หรือแบบฝึกหัดสดที่คุณเขียน HCL ภายใต้การสังเกต Aaron Cao ผู้ก่อตั้ง SubcueAI อธิบายว่าเป้าหมายการออกแบบคือการช่วยเตือนสิ่งที่คุณรู้อยู่แล้ว ไม่ใช่สิ่งที่ใช้ทดแทนความรู้ ด้วยเหตุนี้ผู้ช่วยจึงทำงานจากเรซูเม่และสำนวนของคุณเอง ขอบเขตที่ตรงไปตรงมาอธิบายไว้ใน กลุ่มเนื้อหาเรื่องการตรวจจับ