Terraform 面試會遇到哪些問題?

作者 Aaron Cao · 更新於

Terraform 面試會遇到哪些問題?
預期問題分為四類:核心工作流程(init、plan、apply、destroy)、狀態(遠端後端、鎖定、敏感值)、程式碼結構(模組、變數、工作區、供應商),以及組態漂移、apply 執行到一半失敗,或匯入手動建立資源等情境。面試官評估的是每項選擇背後的推理。

預期問題分為四類:核心工作流程(init、plan、apply、destroy)、狀態(遠端後端、鎖定、敏感值)、程式碼結構(模組、變數、工作區、供應商),以及組態漂移、apply 執行到一半失敗,或匯入手動建立資源等情境。面試官評估的是每項選擇背後的推理。

面試官最先檢查哪些 Terraform 基礎知識?

大多數 Terraform 面試會從工作流程開始,接著迅速深入其底層運作。你應能不看筆記說明整個生命週期:terraform init 會下載供應商並設定後端;terraform plan 會比較所需組態、狀態檔與實際資源,然後列出預計採取的動作;terraform apply 會執行該計畫;terraform destroy 會移除由組態管理的資源。第一個追問幾乎總是為何 plan 與 apply 要分開,而答案是審查與安全性:在進行任何變更之前,可以先檢查、核准並儲存計畫。

  • 供應商。與 AWS、Azure、Google Cloud 或 Kubernetes 等 API 溝通的外掛程式。追問:為什麼要鎖定供應商版本?
  • 資源與資料來源。資源是 Terraform 建立並擁有的項目;資料來源則讀取其不管理的既有項目。
  • 變數、區域值與輸出。分別是輸入、計算值與匯出值。追問:如何避免祕密出現在計畫輸出中?
  • 相依性圖。Terraform 會依資源之間的參照決定操作順序;對於相依性圖無法辨識的相依關係,可使用 depends_on

回答時要說明每個命令會讀取和寫入什麼。若應徵者能指出 plan 是唯讀的,而 apply 會同時變更基礎架構與狀態,就已表明自己理解這套模型。

我該準備哪些狀態與模組問題?

你知道狀態很重要,也猜得到面試官會試探你的理解邊界。這很合理,因此本節會涵蓋觸及該邊界的問題,以及完整答案應包含的內容。

  • 狀態存放在哪裡,為何不放在本機?物件儲存貯體、Terraform Cloud 或資料庫等遠端後端,可提供共享的單一真實來源。接下來會追問鎖定:兩個人同時執行 apply 會損壞狀態,因此支援鎖定的後端會拒絕第二次執行。
  • 狀態檔包含什麼?資源屬性,包括你可能視為敏感資訊的值。應說明狀態必須視為機密資料,採用靜態加密並實施存取控制。
  • 模組。模組是一組可重複使用的資源,擁有自己的輸入與輸出。面試官會問如何管理模組版本、如何避免打造企圖包辦一切的模組,以及根模組如何組合子模組。
  • 工作區與獨立組態的比較。工作區可讓一份組態使用多個狀態檔。陷阱答案是把工作區當成完整的環境策略;正式環境通常應有自己的組態、後端與認證,而不是只靠切換工作區。
  • 在不銷毀資源的情況下重構。重新命名資源會讓 Terraform 想要銷毀並重建它。你應了解 moved 區塊與 terraform state mv 的用途。

回答這裡的每個問題時,可遵循一項好原則:說出該做法能防止的失敗。鎖定可防止並行操作造成損壞;遠端狀態可防止不同筆電上的狀態分歧;鎖定版本可防止例行 apply 時意外升級。

情境題通常怎麼問?

資深職位的多輪面試會以實際情境取代定義題。一個典型例子是:某金融科技公司面試基礎架構職位的平台工程師,被告知有人在雲端主控台中手動修改了安全群組,下一次計畫顯示出無人預期的差異,團隊因此不敢執行。優秀的回答會指出這是組態漂移,解釋 plan 已透過重新整理實際狀態發現它,判斷是否應保留或還原手動變更,接著更新組態以符合現況,或執行 apply 來恢復宣告的狀態。面試官想聽的是決策,而不是命令。

其他常見情境包括:apply 執行到一半失敗,以及之後的狀態會如何;Terraform 出現前建立的資源,以及如何用 terraform import 將其納入管理;多人組成的工程團隊,以及如何安排儲存庫、後端與 CI,讓計畫在提取要求上執行,而 apply 只執行一次;變數中的祕密,以及它們應改由何處提供;會改變資源行為的供應商升級。每種情況都要說明限制條件、選擇機制,並指出其代價。

如果你事先曾大聲說出答案,就更容易答好這些問題。模擬面試模式會進行情境題與追問,其他職位與工具題庫則整理在依職位與主題分類的面試題中。

AI 面試助手能在 Terraform 面試中提供協助嗎?

對話形式的部分可以,但有些限制值得明確說明。SubcueAI 的原生 macOS 與 Windows 桌面應用程式會擷取系統音訊和你的麥克風,並在本機浮層顯示簡短建議。因此,當面試官問狀態鎖定能防止什麼時,你可以一邊說明,一邊在眼前看到相關機制。瀏覽器擴充功能的側邊面板也能在 Chrome 或 Edge 的瀏覽器分頁通話中提供同樣功能,且只擷取會議分頁的音訊。不會有機器人加入通話,也不會將任何內容注入會議頁面;設定步驟請見教學頁面。

不適用的情況包括:受監考的評量、螢幕錄影、公司管理的筆電,或在他人觀察下撰寫 HCL 的即時練習。SubcueAI 創辦人 Aaron Cao 將設計目標描述為提示你已掌握的知識,而非取代這些知識;因此,這款助手會依據你的履歷與你自己的措辭提供協助。誠實的使用界線整理於可偵測性主題群

常見問題

terraform plan 與 terraform apply 有什麼差別?

plan 會讀取組態、狀態檔與實際資源,接著列出 Terraform 將採取的動作,但不會進行任何變更。apply 會執行這些動作並更新狀態。將兩者分開,可在變更基礎架構之前審查並核准計畫。

為什麼具備鎖定功能的遠端狀態很重要?

遠端狀態讓每位工程師與每條管線使用相同的單一真實來源,而鎖定可防止兩次 apply 同時執行並損壞狀態。筆電上的本機狀態會產生分歧,而且無法鎖定。

Terraform 工作區適合用來分隔環境嗎?

工作區可讓一份組態使用多個狀態檔,適合小幅差異。正式環境通常應有自己的組態、後端與認證,因為只切換工作區並不能隔離存取權限或影響範圍。

如何處理 Terraform 中的組態漂移?

執行 plan 以查看宣告狀態與實際狀態的差異,判斷是否應保留手動變更,然後更新組態以符合現況,或執行 apply 來恢復宣告的狀態。手動編輯狀態應是最後手段。

SubcueAI 能在受監考的 Terraform 評量中提供協助嗎?

不能。受監考與錄影的評量不在適用範圍內。它是為對話式面試階段而設計,會在你說話時提示你回想自己的知識;模擬面試模式則適合事前演練。

相關問題

← 更多關於 依職位與主題分類的面試問題