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