28 คำถามและคำตอบสัมภาษณ์ Terraform แบบเรียลไทม์
เผยแพร่แล้ว: 2022-03-11ต่อไปนี้คือ 28 คำถามและคำตอบสำหรับการสัมภาษณ์ Terraform แบบเรียลไทม์พร้อมรายการและคำอธิบายของคำสั่งสำคัญที่มักถูกถามในการสัมภาษณ์
การเพิ่มขึ้นในการใช้เทคโนโลยีคลาวด์ได้เปิดโอกาสมากมายในโลกของ DevOps ในอนาคต เทคโนโลยีคลาวด์จะเป็นหัวข้อทั่วไปสำหรับคำถามในการสัมภาษณ์ และความรู้พื้นฐานเกี่ยวกับคลาวด์และโครงสร้างพื้นฐานเป็นโค้ด เครื่องมือ IAC จะเป็นสิ่งจำเป็นสำหรับบทบาท DevOps
Terraform คืออะไร?
Terraform เป็นหนึ่งในเครื่องมือ IAC ที่ได้รับความนิยมมากที่สุดที่ใช้โดยวิศวกรระบบคลาวด์ทุกคน ช่วยให้เราสามารถกำหนดทรัพยากรทั้งระบบคลาวด์และภายในองค์กรในไฟล์การกำหนดค่าที่มนุษย์อ่านได้ และด้วยเหตุนี้จึงจัดเตรียมทรัพยากรเหล่านี้โดยทางโปรแกรม คุณลักษณะที่โดดเด่นที่สุดของ Terraform คือไม่เหมือนกับเครื่องมือ IAC ส่วนใหญ่ ไม่จำกัดเฉพาะผู้ให้บริการระบบคลาวด์รายเดียว คุณสามารถใช้ Terraform เพื่อเรียกใช้แอปพลิเคชันของคุณบนแพลตฟอร์มคลาวด์หลายแพลตฟอร์มพร้อมกันได้
ในกรณีที่คุณสงสัยว่าเทคโนโลยี terraform รองรับอะไรบ้าง นี่คือรายการเล็ก ๆ :
- บริการเว็บอเมซอน (AWS)
- Google คลาวด์แพลตฟอร์ม (GCP)
- Microsoft Azure
- IBM Cloud
- VMware vSphere
- พื้นที่เซิร์ฟเวอร์
DigitalOcean - Oracle Cloud Infrastructure
- ยานเดกซ์ คลาวด์
- OpenStack.
ในการก้าวไปข้างหน้าในอาชีพของคุณในฐานะวิศวกร DevOps, สถาปนิกระบบคลาวด์, นักพัฒนา หรือผู้ดูแลระบบ คุณจะต้องเผชิญคำถามสัมภาษณ์ Terraform เราได้รวบรวมรายการคำถามสัมภาษณ์เกี่ยวกับ Terraform อันดับต้นๆ ที่จะช่วยเพิ่มพูนความรู้ของคุณเกี่ยวกับ Terraform
คำถามและคำตอบสัมภาษณ์ Terraform ทั่วไป
#1. คุณเข้าใจอะไรจาก Terraform?
Terraform เป็นเครื่องมือ IAC โอเพ่นซอร์สที่สร้างโดย HashiCorp ใช้เพื่อสร้าง อัปเดต ลบ และกำหนดเวอร์ชันโครงสร้างพื้นฐานของคุณบนแพลตฟอร์มระบบคลาวด์หลายแพลตฟอร์ม
#2. เหตุผลในการเลือก Terraform สำหรับ DevOps คืออะไร
การใช้ Terraform สำหรับการจัดเตรียมโครงสร้างพื้นฐานทำให้ไม่มีช่องว่างสำหรับข้อผิดพลาดของมนุษย์ ดังนั้นจึงปรับปรุงคุณภาพ ความสม่ำเสมอ และประสิทธิภาพของโครงสร้างพื้นฐานบนคลาวด์และในองค์กร Terraform ใช้ภาษา HCL ซึ่งค่อนข้างคล้ายกับ JSON และง่ายต่อการเรียนรู้และใช้งาน ต่างจากเครื่องมือ IAC อื่นๆ ที่ผู้ให้บริการระบบคลาวด์เสนอ เช่น Cloudformation for AWS เราสามารถใช้ Terraform กับแพลตฟอร์มระบบคลาวด์หลายแพลตฟอร์มพร้อมกันได้ ซึ่งช่วยหลีกเลี่ยงความจำเป็นในการเรียนรู้เครื่องมือ IAC หลายตัวและปรับปรุงขอบเขตของการทำงานร่วมกัน
#3. Terraform ทำงานอย่างไร?
Terraform ใช้ปลั๊กอินที่เรียกว่าผู้ให้บริการ Terraform เพื่อโต้ตอบกับ API บนแพลตฟอร์มคลาวด์และจัดเตรียมทรัพยากรของเรา ในฐานะผู้ใช้ขั้นปลาย เวิร์กโฟลว์ Terraform มีสามขั้นตอน
เขียน : เขียนโครงสร้างพื้นฐานเป็นรหัส
แผน : ดูตัวอย่างการเปลี่ยนแปลงที่ Terraform จะทำก่อนสมัคร
ใช้ : จัดเตรียมโครงสร้างพื้นฐานและใช้การเปลี่ยนแปลง
#4. คุณหมายถึงอะไรโดย Terraform cloud?
Terraform Cloud เป็นสภาพแวดล้อมระยะไกลที่ได้รับการปรับให้เหมาะสมสำหรับเวิร์กโฟลว์ Terraform มีคุณลักษณะต่างๆ เช่น พื้นที่ทำงานและการล็อกสถานะ ซึ่งช่วยให้ผู้คนในทีมใหญ่ทำงานร่วมกันได้
#5. คุณเข้าใจอะไรจาก State ใน Terraform?
ในฐานะเครื่องมือ IAC Terraform ควรทราบสถานะปัจจุบันของการกำหนดค่าและโครงสร้างพื้นฐานภายใต้การจัดการ Terraform เก็บข้อมูลนี้ไว้ในไฟล์ที่เรียกว่าไฟล์สถานะ
#6. ประโยชน์ของ Terraform State คืออะไร?
สถานะ Terraform ช่วยให้ Terraform สามารถแมปทรัพยากรในโลกแห่งความเป็นจริงกับการกำหนดค่าของคุณ ติดตามข้อมูลเมตา และปรับปรุงประสิทธิภาพเมื่อวางแผนการเปลี่ยนแปลงสำหรับโครงสร้างพื้นฐานที่ซับซ้อน เป็นองค์ประกอบที่สำคัญของ Terraform
#7. คุณเข้าใจอะไรจาก Terraform Backend?
แบ็กเอนด์ Terraform เป็นแพลตฟอร์มที่จัดเก็บสแนปชอตของ Terraform State ตามค่าเริ่มต้น Terraform จะใช้แบ็กเอนด์ที่เรียกว่าโลคัลเพื่อจัดเก็บสถานะเป็นไฟล์ในเครื่องบนดิสก์ของคุณ แบ็กเอนด์ที่รองรับอื่น ๆ ทั้งหมดเป็นบริการจัดเก็บข้อมูลระยะไกลบางประเภท
#8. ผู้ให้บริการใน Terraform คืออะไร?
ผู้ให้บริการใน Terraform เป็นปลั๊กอินที่อนุญาตให้ Terraform สามารถโต้ตอบกับผู้ให้บริการระบบคลาวด์ ผู้ให้บริการ SaaS และ API อื่นๆ ตัวอย่างเช่น หากเราวางแผนที่จะใช้ Terraform เพื่อจัดเตรียมโครงสร้างพื้นฐานบน AWS เราจะต้องประกาศผู้ให้บริการ AWS ในไฟล์การกำหนดค่าของเรา
#9. ใครเป็นผู้ดูแลผู้ให้บริการ Terraform
ผู้ให้บริการจะแจกจ่ายแยกต่างหากจาก Terraform เอง ในฐานะผู้ใช้ Terraform ทุกคนสามารถพัฒนาผู้ให้บริการของตนเองได้ มีผู้ให้บริการมาตรฐานบางรายที่ได้รับการดูแลอย่างชัดเจนโดย Hashicorp
#10. Sentinel คืออะไร?
Sentinel เป็นนโยบายในฐานะเครื่องมือโค้ดที่ใช้ในการบังคับใช้การกำหนดค่ามาตรฐานสำหรับทรัพยากรที่ Terraform ปรับใช้ สามารถใช้โดยองค์กรเพื่อวัตถุประสงค์ในการปฏิบัติตามและการกำกับดูแล
#11. คุณเข้าใจอะไรจากโมดูลใน Terraform
โมดูล Terraform เป็นคอนเทนเนอร์มาตรฐานสำหรับทรัพยากรจำนวนมากที่ใช้ร่วมกันเพื่อจัดเตรียมและกำหนดค่าทรัพยากร ตัวอย่างเช่น คุณสามารถสร้าง “โมดูล VPC” สำหรับองค์กรของคุณที่จัดเตรียม VPC มาตรฐานและทรัพยากรอื่นๆ เช่น ซับเน็ตและเกตเวย์อินเทอร์เน็ต โมดูลสามารถแชร์แบบสาธารณะผ่านรีจีสทรีโมดูลสาธารณะและแบบส่วนตัวผ่านรีจิสตรีโมดูลส่วนตัว
#12. ประโยชน์ของการใช้โมดูลใน terraform คืออะไร?
โมดูล Terraform ช่วยให้เราสร้างนามธรรมเชิงตรรกะที่ด้านบนของชุดทรัพยากร การใช้โมดูลช่วยให้เราสามารถรักษาและใช้การกำหนดค่ามาตรฐานสำหรับทรัพยากรซ้ำได้ พวกเขาสามารถกำหนดเวอร์ชันและแชร์กับสมาชิกในทีมของคุณเพื่อจัดเตรียมทรัพยากรด้วยวิธีมาตรฐาน
#13. Private Module Registry คืออะไร?
ฟีเจอร์ Private Module Registry Terraform Cloud ช่วยให้เราแชร์โมดูล Terraform ทั่วทั้งองค์กรได้
คำถามและคำตอบสัมภาษณ์ Terraform ขั้นสูง
#14. เราจะส่งออกข้อมูลจากโมดูลหนึ่งไปยังอีกโมดูลหนึ่งได้อย่างไร
เราสามารถส่งออกข้อมูลจากโมดูลโดยการกำหนดบล็อคเอาต์พุตในไฟล์การกำหนดค่าโมดูล ข้อมูลนี้สามารถถ่ายโอนเป็นพารามิเตอร์ไปยังโมดูลปลายทางได้
#13. คุณจะกำหนดการอ้างอิงใน Terraform ได้อย่างไร?
Terraform มีการจัดการการพึ่งพาในตัว Terraform มีการพึ่งพาสองประเภทระหว่างทรัพยากร - การพึ่งพาโดยนัยและการพึ่งพาที่ชัดเจน

Terraform ตรวจพบการพึ่งพาโดยนัยตามชื่อโดยอัตโนมัติ นี่คือเวลาที่เอาต์พุตของ "ทรัพยากร A" ถูกใช้ใน "ทรัพยากร B" Terraform ตรวจพบโดยอัตโนมัติว่าจำเป็นต้องสร้าง "ทรัพยากร B" หลังจาก "ทรัพยากร A" เท่านั้น
การพึ่งพาอาศัยกันที่ชัดเจนสามารถระบุได้ในกรณีที่ทรัพยากรสองรายการต้องพึ่งพาซึ่งกันและกันภายในโดยไม่ต้องแชร์ผลลัพธ์ใดๆ ซึ่งสามารถทำได้โดยใช้พารามิเตอร์ Depend_on ในบล็อกการกำหนดค่า
#14. ผู้จัดเตรียมใน Terraform คืออะไร?
ผู้จัดเตรียมคือทรัพยากร Terraform ที่ใช้ในการรันสคริปต์โดยเป็นส่วนหนึ่งของการสร้างหรือทำลายทรัพยากร ผู้จัดเตรียมมีสองประเภทใน Terraform:
- local-exec: เรียกใช้สคริปต์บนเครื่องที่รัน Terraform
- remote- exec: เรียกใช้สคริปต์บนรีซอร์สระยะไกลหลังจากสร้าง
ผู้จัดเตรียมมีไว้เพื่อใช้เป็นทางเลือกสุดท้ายใน Terraform เท่านั้น
#15. บล็อกข้อมูลภายนอกใน Terraform คืออะไร
เช่นเดียวกับตัวจัดเตรียม local-exec คุณสามารถใช้ data bock ภายนอกเพื่อเรียกใช้สคริปต์บนเครื่องที่ใช้ Terraform ความแตกต่างระหว่างตัวจัดเตรียมและบล็อกข้อมูลภายนอกคือ สคริปต์ในบล็อกข้อมูลภายนอกสามารถส่งคืนข้อมูลในรูปแบบ JSON ได้ ในขณะที่ตัวจัดเตรียมไม่สามารถส่งคืนเอาต์พุตใดๆ ได้ สิ่งสำคัญที่ควรทราบคือบล็อคข้อมูลภายนอกยังเป็นทางเลือกสุดท้ายและไม่ควรใช้หากมีทางเลือกอื่นที่ดีกว่า
#16. คนสองคนที่ใช้ Terraform cloud สามารถสร้างโครงสร้างพื้นฐานที่แตกต่างกันสองชุดโดยใช้ไดเร็กทอรีการทำงานเดียวกันได้อย่างไร
โดยใช้พื้นที่ทำงานที่แตกต่างกัน ผู้ใช้เหล่านี้สามารถเริ่มใช้งาน Terraform ในพื้นที่ทำงานสองแห่งแยกกัน พื้นที่ทำงานแต่ละแห่งมีไฟล์สถานะเป็นของตัวเอง ตราบใดที่ทรัพยากรไม่ทับซ้อนกัน ผู้ใช้ทั้งสองสามารถจัดเตรียมโครงสร้างพื้นฐานที่แตกต่างกันสองชุดได้สำเร็จโดยใช้รหัสเดียวกัน
#17. จะเกิดอะไรขึ้นเมื่อวิศวกรหลายคนเริ่มปรับใช้โครงสร้างพื้นฐานโดยใช้ไฟล์สถานะเดียวกัน
Terraform มีคุณสมบัติที่สำคัญมากที่เรียกว่า "การล็อกสถานะ" คุณลักษณะนี้ช่วยให้แน่ใจว่าไม่มีการเปลี่ยนแปลงใดๆ กับไฟล์สถานะระหว่างการรัน และป้องกันไม่ให้ไฟล์สถานะเสียหาย สิ่งสำคัญคือต้องสังเกตว่า Terraform Backends บางตัวไม่สนับสนุนคุณสมบัติการล็อกสถานะ คุณควรเลือกแบ็กเอนด์ที่ถูกต้องหากคุณสมบัตินี้เป็นข้อกำหนด
#18. ทรัพยากรว่างใน Terraform คืออะไร?
ทรัพยากร Terraform null คือการกำหนดค่าที่ทำงานเหมือนบล็อกทรัพยากร Terraform มาตรฐาน แต่ไม่ได้สร้างทรัพยากรใดๆ นี่อาจดูเหมือนทรัพยากรที่แปลกและไร้ประโยชน์ แต่ อาจมีประโยชน์ในสถานการณ์ต่างๆ เพื่อแก้ไขข้อจำกัดใน Terraform
#19. คุณจะใช้ผู้ให้บริการรายเดียวกันใน Terraform ด้วยการกำหนดค่าต่างกันได้อย่างไร
โดยใช้อาร์กิวเมนต์นามแฝงในบล็อกผู้ให้บริการ
#20. คุณมีไฟล์การกำหนดค่า Terraform ที่ไม่มีทรัพยากร จะเกิดอะไรขึ้นเมื่อคุณรันคำสั่ง terraform apply
?
Terraform จะทำลายทรัพยากรทั้งหมด การเริ่มต้นรันว่างด้วยคำสั่ง terraform apply
จะเหมือนกับการเริ่มต้นรัน terraform destroy
#21. จะเกิดอะไรขึ้นหากทรัพยากรถูกสร้างขึ้นสำเร็จใน Terraform แต่ล้มเหลวระหว่างการจัดเตรียม?
นี่เป็นสถานการณ์ที่ไม่น่าจะเกิดขึ้นได้ แต่เมื่อสิ่งนี้เกิดขึ้น ทรัพยากรจะถูกทำเครื่องหมายว่าเสียและสามารถสร้างใหม่ได้โดยการเริ่มการทำงานเทอร์ราฟอร์มใหม่
#22. ค่าใดของตัวแปร TF_LOG
ที่ให้การบันทึกแบบละเอียดมากที่สุด
TRACE เป็นค่าที่ละเอียดที่สุดและเป็นค่าเริ่มต้นของตัวแปร TF_LOG
#23. คุณจะนำเข้าทรัพยากรที่มีอยู่ภายใต้ Terraform Management ได้อย่างไร
โดยใช้คำสั่ง terraform import
#24. คำสั่งใดที่สามารถใช้ดูตัวอย่างแผนการดำเนินการของ Terraform
คำสั่งแผนภูมิประเทศ terraform plan
ดำเนินการของการเปลี่ยนแปลงที่ Terraform จะทำกับโครงสร้างพื้นฐาน
#25. คำสั่งใดที่ใช้ปรับสภาพ Terraform กับโครงสร้างพื้นฐานในโลกแห่งความเป็นจริงได้
คำสั่ง terraform apply -refresh-only
ใช้เพื่อปรับสถานะ Terraform กับโครงสร้างพื้นฐานในโลกแห่งความเป็นจริง เป็นทางเลือกใหม่สำหรับคำสั่ง terraform refresh
ซึ่งตอนนี้เลิกใช้แล้ว
#26. คำสั่งใดที่ใช้สลับระหว่างพื้นที่ทำงานเมื่อใช้ Terraform Cloud
terraform workspace select <workspace-name>
คำสั่งใช้สำหรับเลือกพื้นที่ทำงานอื่น
#27. คำสั่งใดใช้ตรวจสอบไวยากรณ์ในไฟล์คอนฟิกูเรชัน Terraform
คำสั่ง terraform validate
ใช้เพื่อตรวจสอบว่าคอนฟิกูเรชันมีความถูกต้องทางไวยากรณ์และสอดคล้องกันภายในหรือไม่
#28. คำสั่งใดที่ใช้สร้างพื้นที่ทำงานใหม่ใน Terraform cloud
คำสั่ง terraform workspace new <workspace-name>
ถูกใช้เพื่อสร้างพื้นที่ทำงานใหม่
คำสั่ง Terraform ที่สำคัญอื่นๆ สำหรับการสัมภาษณ์ทางเทคนิค
- terraform init: เริ่มต้นแบ็กเอนด์ระยะไกล ผู้ให้บริการดาวน์โหลดและโมดูลระยะไกลที่กำหนดไว้ในการกำหนดค่าของคุณ
- terraform init -upgrade: ใช้เพื่ออัปเกรดผู้ให้บริการที่ดาวน์โหลดที่มีอยู่
- แผน terraform: สร้างแผนการดำเนินการสำหรับการสร้างหรืออัปเดตโครงสร้างพื้นฐาน
- ใช้ Terraform: สร้างหรืออัปเดตโครงสร้างพื้นฐานหลังจากขอการยืนยันจากผู้ใช้
- ใช้ Terraform –auto-approve: สร้างหรืออัปเดตโครงสร้างพื้นฐาน ขั้นตอนการอนุมัติผู้ใช้ถูกข้ามไป
- terraform destroy: ลบโครงสร้างพื้นฐานหลังจากขอการยืนยันจากผู้ใช้
- terraform destroy –auto-approve: ลบโครงสร้างพื้นฐาน ขั้นตอนการอนุมัติผู้ใช้ถูกข้ามไป
- terraform fmt : สแกนไดเร็กทอรีปัจจุบันเพื่อหาไฟล์การกำหนดค่าและจัดรูปแบบตามรูปแบบและรูปแบบบัญญัติของ HCP
- terraform fmt –recursive: สแกนไดเร็กทอรีปัจจุบันรวมถึงไดเร็กทอรีย่อยสำหรับไฟล์คอนฟิกูเรชันและจัดรูปแบบตามรูปแบบและรูปแบบบัญญัติของ HCP
- การแสดง terraform: จัดเตรียมเอาต์พุตที่มนุษย์สามารถอ่านได้จากไฟล์สถานะหรือแผน
ฉันหวังว่าข้อมูลข้างต้นจะช่วยให้คุณได้งาน Terraform