使用 Terraform 佈建 Compute Engine 資源

HashiCorp Terraform 是一種基礎架構即程式碼 (IaC) 工具,可讓您佈建及管理雲端基礎架構。Terraform 提供稱為「供應商」的外掛程式,可讓您與雲端服務供應商和其他 API 互動。您可以使用 Terraform 供應商 Google Cloud佈建及管理 Google Cloud 資源,包括 Compute Engine。

本頁面將介紹如何搭配 Compute Engine 使用 Terraform,包括 Terraform 的運作方式簡介,以及一些有助於開始搭配 Google Cloud使用 Terraform 的資源。您也會找到 Compute Engine 的 Terraform 參考說明文件連結、程式碼範例,以及使用 Terraform 佈建 Compute Engine 資源的指南。

如要瞭解如何開始使用 Terraform for Google Cloud,請參閱「安裝及設定 Terraform」或「Terraform for Google Cloud 快速入門」。

Terraform 的運作方式

Terraform 採用以設定為導向的宣告式語法,可用於描述要在 Google Cloud 專案中佈建的基礎架構。在一個或多個 Terraform 設定檔中撰寫這項設定後,您可以使用 Terraform CLI 將這項設定套用至 Compute Engine 資源。

以下步驟說明 Terraform 的運作方式:

  1. 您可以在 Terraform 設定檔中說明要佈建的基礎架構。您不需要編寫程式碼,說明如何佈建基礎架構。Terraform 會為您佈建基礎架構。
  2. 執行 terraform plan 指令,評估設定並產生執行計畫。您可以查看方案,並視需要進行變更。
  3. 執行 terraform apply 指令,該指令會執行下列動作:

    1. 根據執行計畫,在背景呼叫對應的 Compute Engine API,佈建基礎架構。
    2. 這會建立 Terraform 狀態檔案,也就是將設定檔中的資源對應至實際基礎架構中資源的 JSON 檔案。Terraform 會使用這個檔案記錄基礎架構的最新狀態,並決定何時建立、更新及刪除資源。
    3. 執行 terraform apply 時,Terraform 會使用狀態檔案中的對應項目,比較現有基礎架構與程式碼,並視需要進行更新:

      • 如果設定檔中定義了資源物件,但狀態檔案中沒有,Terraform 就會建立該物件。
      • 如果狀態檔中存在資源物件,但設定與設定檔不同,Terraform 會更新資源,使其與設定檔相符。
      • 如果狀態檔案中的資源物件與設定檔相符,Terraform 就不會變更資源。

Compute Engine 的 Terraform 資源

資源是 Terraform 語言的基本元素。每個資源區塊都會說明一或多個基礎架構物件,例如虛擬網路或運算執行個體。

下表列出適用於 Compute Engine 的 Terraform 資源:

Terraform 資源 Terraform 資料來源

Compute Engine 的 Terraform 指南

下表列出 Compute Engine 的 Terraform 基礎操作指南和教學課程:

指南 詳細資料
建立並啟動 Compute Engine 執行個體 說明如何建立虛擬機器 (VM) 執行個體。
建立具有本機 SSD 磁碟的 VM 說明如何建立具有本機 SSD 磁碟儲存空間的 VM。
建立磁碟快照 說明如何建立標準快照,定期備份磁碟中的資料。
使用副本複製磁碟 說明如何建立現有磁碟的區域磁碟副本。
建立及管理區域磁碟 說明如何建立及管理地區磁碟。
建立及使用 Spot VM 說明如何建立及管理 Spot VM。Spot VM 是 VM 執行個體,屬於額外的 Compute Engine 容量。Spot VM 的價格比標準 VM 的隨選價格低得多
將 SSH 金鑰新增至 VM 說明如何將 SSH 金鑰新增至使用 OS 登入功能的 VM 執行個體,以及使用中繼資料型 SSH 金鑰的 VM。
執行關機指令碼 說明如何建立及執行關機指令碼,在 VM 執行個體停止或重新啟動前執行指令。
為單一專案建立預留項目 說明如何建立單一專案預留項目,這類預留項目只能由同一專案中的 VM 執行個體使用。
建立執行個體範本 說明如何建立及管理執行個體範本。
依據時間表調度資源 說明如何為現有 MIG 建立資源調度排程。 排程式自動調度資源功能可讓您在預期負載出現前排定容量,藉此提高工作負載的可用性。
為 VM 新增 Persistent Disk 儲存空間 說明如何建立空白的非開機區域永久磁碟磁碟區,並將其連結至 VM。
設定 OS 登入 說明如何設定 OS 登入。
將非開機磁碟連接至 VM 說明如何將非開機區域磁碟連接至 VM。
建立使用使用者管理服務帳戶的 VM 說明如何建立 VM 執行個體,並設定使用使用者管理的服務帳戶。服務帳戶是一種特殊的帳戶,通常由應用程式或運算工作負載使用,可發出授權的 API 呼叫。
增加永久磁碟的大小 說明如何增加永久磁碟的大小。
在 VM 上啟用虛擬顯示器 說明如何在 VM 執行個體上啟用虛擬螢幕。
在單一可用區中建立 MIG 說明如何在單一可用區中建立代管執行個體群組 (MIG)。將所有 MIG 的 VM 放入單一可用區,有助於降低特定工作負載 (例如批次工作負載) 的延遲情況。
使用自訂主機名稱建立 VM 執行個體 說明如何使用自訂主機名稱建立 VM 執行個體。
設定以應用程式為基礎的健康狀態檢查和自動修復 說明如何設定以應用程式為準的健康狀態檢查,自動修復 MIG 中的 VM。
建立使用先占 VM 的 MIG 說明如何建立使用先占 VM 執行個體的 MIG。 如果您的工作負載可以容許服務中斷,並希望利用先占 VM 可省下的成本,先占 VM 就能派上用場。
在 MIG 中新增及移除 VM 說明如何從 MIG 新增及移除 VM。
建立啟用自動調度資源功能的 MIG 說明如何建立啟用自動調度資源功能的 MIG,根據群組的平均 CPU 使用率自動新增或移除 VM。
建立具備有狀態磁碟的 MIG 說明如何建立使用先占 VM 執行個體的 MIG。 如果您的工作負載可以容許服務中斷,並希望利用先占 VM 可省下的成本,先占 VM 就能派上用場。
建立 SQL Server VM 執行個體 說明如何建立 Microsoft SQL Server VM 執行個體。SQL Server 是在 Windows Server 和部分 Linux 發行版本上執行的資料庫系統。您可以在 Compute Engine 上使用 SQL Server 做為應用程式的後端、彈性開發和測試環境,或做為備份和災害復原的本機系統。
建立 OS 政策指派作業 說明如何建立 OS 政策指派作業。您可以使用 OS 政策,在 Linux 和 Windows VM 執行個體之間維持一致的軟體設定。
在 MIG 中設定有狀態中繼資料 說明如何在 MIG 中設定有狀態中繼資料。執行個體中繼資料可透過中繼資料伺服器設定應用程式的屬性,並與應用程式通訊。
在 MIG 中設定有狀態永久磁碟 說明如何在 MIG 中設定有狀態永久磁碟。 將永久性磁碟設為有狀態,即可享有 VM 執行個體自動修復和自動更新的優點,同時保留磁碟狀態。
在 MIG 中設定有狀態的 IP 位址 說明如何在 MIG 中設定有狀態的 IP 位址。在 MIG 中設定有狀態 IP 位址,可確保在群組中的 VM 執行個體自動修復、更新及重新建立時,IP 位址不會變更。
在區域性 MIG 中為 VM 設定目標分配型態 說明如何為 VM 設定目標分配型態。
在單一區域的多個可用區中建立含有 VM 的 MIG 說明如何建立 VM 分散於一個區域的多個可用區的 MIG。讓應用程式負載分散在多個可用區,可防止工作負載受到可用區故障的影響。
在區域 MIG 中停用及重新啟用主動式 VM 重新分配功能 說明如何在區域性 MIG 中停用及重新啟用主動式 VM 重新分配功能。在地區 MIG 中,如要在地區的所選區域間維持平均的 VM 執行個體數量,請使用主動式執行個體重新分配功能。這項設定選項可在發生區域層級的故障時,最大化應用程式的可用性。

Compute Engine 適用的 Terraform 模組和藍圖

模組和藍圖可協助您自動佈建及管理大量資源。 Google Cloud 模組是一組可重複使用的 Terraform 設定檔,可建立 Terraform 資源的邏輯抽象概念。藍圖是可部署及重複使用的模組套件,也是實作及記錄特定解決方案的政策。

下表列出與 Compute Engine 相關的模組和藍圖:

模組或藍圖 詳細資料
terraform-google-vm 一系列有主見的子模組,可用於在 Google Cloud中佈建 VM。
terraform-google-startup-scripts 提供實用的開機指令碼程式庫,可嵌入 VM 中。
terraform-google-container-vm 在 Compute Engine 執行個體上部署容器

後續步驟