28 個實時 Terraform 面試問題和答案

已發表: 2022-03-11

這裡有 28 個實時 Terraform 面試問題和答案,其中包含面試中經常問到的重要命令的列表和解釋。

雲技術使用的興起為 DevOps 領域帶來了很多機會。 未來,雲技術將成為面試題的共同話題,而云和基礎設施即代碼的基礎知識,IAC 工具將成為 DevOps 角色的必備。

什麼是 Terraform?

Terraform 是每個雲工程師使用的最流行的 IAC 工具之一。 它允許我們在人類可讀的配置文件中定義雲和本地資源,從而以編程方式配置這些資源。 Terraform 最顯著的特點是,與大多數 IAC 工具不同,它不限於單個雲提供商。 您可以使用 Terraform 在多個雲平台上同時運行您的應用程序。

如果您想知道 terraform 支持哪些技術,這裡有一個小列表:

  • 亞馬遜網絡服務 (AWS)
  • 谷歌云平台 (GCP)
  • 微軟天青
  • IBM 雲
  • VMware vSphere
  • 服務器空間
  • 數字海洋
  • 甲骨文云基礎設施
  • 雅得士。 雲
  • 開放堆棧。

要在 DevOps 工程師、雲架構師、開發人員或管理員的職業生涯中繼續前進,您將不得不面對 Terraform 面試問題。 我們編制了一份頂級 terraform 面試問題列表,可以幫助您增強對 Terraform 的了解。

一般 Terraform 面試問題和答案

#1。 你對 Terraform 的理解是什麼?

Terraform 是由 HashiCorp 創建的開源 IAC 工具。 它用於在多個雲平台上創建、更新、刪除和版本化您的基礎架構。

#2。 為 DevOps 選擇 Terraform 的原因是什麼?

使用 Terraform 供應基礎設施不會留下人為錯誤的餘地,從而提高雲和本地基礎設施的質量、一致性和效率。 Terraform 使用 HCL 語言,它與 JSON 非常相似,易於學習和使用。 與 Cloudformation for AWS 等雲提供商提供的其他 IAC 工具不同,我們可以同時將 Terraform 與多個雲平台一起使用。 這避免了學習多種 IAC 工具的需要,並擴大了協作範圍。

#3。 Terraform 是如何工作的?

Terraform 使用稱為 Terraform 提供程序的插件與雲平台上的 API 交互並提供我們的資源。 作為最終用戶,terraform 工作流程包含三個步驟。

編寫:將基礎設施編寫為代碼。

計劃:在應用之前預覽 Terraform 將進行的更改。

Apply :配置基礎架構並應用更改。

#4。 Terraform 雲是什麼意思?

Terraform Cloud 是針對 Terraform 工作流程優化的遠程環境。 它提供了工作空間和狀態鎖定等功能,允許大團隊中的人員進行協作。

#5。 您對 Terraform 中的狀態有何理解?

作為 IAC 工具,terraform 應該知道其管理下的配置和基礎設施的當前狀態。 Terraform 將此信息存儲在稱為狀態文件的文件中。

#6。 Terraform 狀態有什麼好處?

Terraform 狀態允許 Terraform 將現實世界的資源映射到您的配置,跟踪元數據,並在規劃複雜基礎設施的更改時提高性能。 它是 Terraform 的關鍵組件。

#7。 您如何理解 Terraform 後端?

Terraform 後端是存儲 Terraform 狀態快照的平台。 默認情況下,Terraform 使用名為 local 的後端將狀態存儲為磁盤上的本地文件。 所有其他支持的後端都是某種遠程存儲服務。

#8。 Terraform 中的提供者是什麼?

Terraform 中的提供程序是允許 Terraform 與雲提供程序、SaaS 提供程序和其他 API 交互的插件。 例如,如果我們計劃使用 Terraform 在 AWS 上配置基礎設施,我們將需要在我們的配置文件中聲明一個 AWS 提供商。

#9。 誰維護 Terraform 提供者?

提供程序與 Terraform 本身分開分發。 作為 Terraform 用戶,任何人都可以開發自己的提供程序。 Hashicorp 明確維護了一些標準提供程序。

#10。 什麼是哨兵?

Sentinel 是一種策略即代碼工具,用於強制執行 Terraform 部署的資源的標準配置。 組織可以將其用於合規性和治理目的。

#11。 您如何理解 Terraform 中的模塊?

Terraform 模塊是多個資源的標準容器,這些資源一起用於供應和配置資源。 例如,您可以為您的組織創建一個“VPC 模塊”,用於配置標準 VPC 和其他資源,如子網和 Internet 網關。 模塊可以通過公共模塊註冊表公開共享,也可以通過私有模塊註冊表私下共享。

#12。 在 terraform 中使用模塊有什麼好處?

Terraform 模塊允許我們在資源集的頂部創建邏輯抽象。 使用模塊允許我們維護和重用資源的標準配置。 它們可以進行版本控制並與您的團隊成員共享,以標準方式配置資源。

#13。 什麼是私有模塊註冊表?

私有模塊註冊表 Terraform Cloud 功能允許我們在整個組織中共享 Terraform 模塊。

高級 Terraform 面試問題和答案

#14。 我們如何將數據從一個模塊導出到另一個模塊?

我們可以通過在模塊配置文件中定義輸出塊來從模塊中導出數據。 然後可以將該數據作為參數傳輸到目標模塊。

#13。 如何在 Terraform 中定義依賴關係?

Terraform 具有內置的依賴管理。 Terraform 在資源之間有兩種依賴關係——隱式依賴和顯式依賴。

顧名思義,隱式依賴關係由 Terraform 自動檢測。 這是在“資源 B”中使用“資源 A”的輸出時。 Terraform 自動檢測到只有在“資源 A”之後才需要創建“資源 B”

在兩個資源內部相互依賴而不共享任何輸出的情況下,可以指定顯式依賴關係。 這可以通過使用配置塊中的 depends_on 參數來完成。

#14。 Terraform 中的 Provisioner 是什麼?

Provisioner 是 Terraform 資源,用於在資源創建或銷毀過程中執行腳本。 Terraform 中有兩種類型的 Provisioner:

  • local-exec:在運行 Terraform 的機器上調用腳本。
  • remote- exec:在遠程資源創建後調用它的腳本。

Provisioner 僅用作 Terraform 中的最後手段。

#15。 Terraform 中的外部數據塊是什麼?

就像 local-exec 供應商一樣,外部數據塊可用於在運行 Terraform 的機器上運行腳本。 Provisioner 和外部數據塊的區別在於,外部數據塊中的腳本可以返回 JSON 格式的數據,而 Provisioner 不能返回任何輸出。 需要注意的是,外部數據塊也是最後的手段,如果有更好的選擇,則不應使用。

#16。 使用 Terraform 雲的兩個人如何使用同一個工作目錄創建兩組不同的基礎架構?

通過使用不同的工作區。 這些用戶可以在兩個單獨的工作區中啟動 Terraform 運行。 每個工作區都有自己的狀態文件,因此只要資源不重疊,兩個用戶都可以使用相同的代碼成功地配置兩組不同的基礎設施。

#17。 當多個工程師開始使用同一個狀態文件部署基礎設施時會發生什麼?

Terraform 有一個非常重要的特性,叫做“狀態鎖定” 。 此功能可確保在運行期間不對狀態文件進行任何更改,並防止狀態文件損壞。 請務必注意,並非所有 Terraform 後端都支持狀態鎖定功能。 如果需要此功能,您應該選擇正確的後端。

#18。 Terraform 中的空資源是什麼?

terraform null 資源是一種像標準 terraform 資源塊一樣運行但不創建任何資源的配置。 這聽起來像是一個奇怪且無用的資源,但它在各種情況下都可以用來解決 Terraform 中的限制。

#19。 如何在 Terraform 中使用具有不同配置的相同提供程序?

通過在提供程序塊中使用別名參數。

#20。 您有一個沒有資源的 Terraform 配置文件。 運行terraform apply命令時會發生什麼?

Terraform 將銷毀所有資源。 使用terraform apply命令啟動空運行與啟動 terraform destroy 運行完全相同。

#21。 如果資源在 terraform 中成功創建但在配置期間失敗,會發生什麼情況?

這是不太可能發生的情況,但是當這種情況發生時,資源會被標記為被污染,並且可以通過重新啟動 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 雲中創建新工作空間?

terraform workspace new <workspace-name>命令用於創建新的工作空間。

其他一些用於技術面試的重要 terraform 命令。

  • terraform init:初始化遠程後端; 下載配置中定義的提供程序和遠程模塊。
  • terraform init -upgrade:用於升級現有下載的提供程序。
  • terraform plan:生成基礎設施創建或更新的執行計劃。
  • terraform apply:在請求用戶確認後創建或更新基礎設施。
  • terraform apply –auto-approve:創建或更新基礎設施; 跳過用戶批准階段。
  • terraform destroy:在請求用戶確認後刪除基礎設施。
  • terraform destroy –auto-approve:刪除基礎設施; 跳過用戶批准階段。
  • terraform fmt :掃描當前目錄以查找配置文件並根據 HCP 規範樣式和格式對其進行格式化。
  • terraform fmt –recursive:掃描當前目錄以及配置文件的子目錄,並根據 HCP 規範樣式和格式對其進行格式化。
  • terraform show:從狀態或計劃文件中提供人類可讀的輸出。

我希望以上信息可以幫助您獲得 Terraform 工作。