HashiCorp Terraform 是基礎架構即程式碼 (IaC) 工具,可讓您佈建及管理雲端基礎架構。Terraform 提供名為「供應工具」的外掛程式,可讓您與雲端供應工具和其他 API 互動。您可以使用 Google Cloud的 Terraform 供應器來佈建及管理 Google Cloud 資源,包括 Compute Engine。
本頁面將介紹如何搭配 Compute Engine 使用 Terraform,包括 Terraform 的運作方式簡介,以及一些可協助您開始使用 Terraform 與 Google Cloud的資源。您也會看到 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 的運作方式:
- 您可以在 Terraform 設定檔中說明要佈建的基礎架構。您不需要編寫說明如何佈建基礎架構的程式碼。Terraform 會為您佈建基礎架構。
- 您執行
terraform plan
指令,該指令會評估設定並產生執行計畫。您可以查看企劃書,並視需要進行修改。 -
您執行
terraform apply
指令,該指令會執行下列動作:- 這項工具會在背景叫用對應的 Compute Engine API,根據執行計畫佈建基礎架構。
- 這項指令會建立 Terraform 狀態檔案,這是一個 JSON 檔案,可將設定檔中的資源對應至實際基礎架構中的資源。Terraform 會使用這個檔案記錄基礎架構的最新狀態,並決定何時建立、更新及刪除資源。
-
執行
terraform apply
時,Terraform 會使用狀態檔案中的對應項目,將現有基礎架構與程式碼進行比較,並視需要進行更新:- 如果資源物件是在設定檔中定義,但不存在於狀態檔案中,Terraform 會建立該物件。
- 如果狀態檔案中存在資源物件,但其設定與設定檔不同,Terraform 會更新資源,使其與設定檔相符。
- 如果狀態檔案中的資源物件與設定檔相符,Terraform 就不會變更該資源。
Compute Engine 的 Terraform 資源
資源是 Terraform 語言的基本元素。每個資源區塊都會描述一或多個基礎架構物件,例如虛擬網路或運算執行個體。
下表列出可用於 Compute Engine 的 Terraform 資源:
以 Terraform 為基礎的 Compute Engine 指南
下表列出 Compute Engine 的 Terraform 操作說明和教學課程:
指南 | 詳細資料 |
---|---|
建立並啟動 Compute Engine 執行個體 | 說明如何建立虛擬機器 (VM) 執行個體。 |
建立具有本機 SSD 磁碟的 VM | 說明如何使用本機 SSD 磁碟儲存空間建立 VM。 |
建立磁碟快照 | 說明如何建立標準快照,以便定期備份磁碟中的資料。 |
使用本機副本複製磁碟 | 說明如何為現有磁碟建立區域磁碟複本。 |
建立及管理區域磁碟 | 說明如何建立及管理區域磁碟。 |
建立及使用 Spot VM | 說明如何建立及管理 Spot VM。Spot VM 是 Compute Engine 額外容量的 VM 執行個體。Spot VM 的價格比標準 VM 的隨選價格低得多 |
在 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 執行個體上部署容器 |
後續步驟
- Compute Engine 的 Terraform 程式碼範例
- Terraform 說明文件 Google Cloud
- Google Cloud HashiCorp 中的提供者說明文件
- Google Cloud的基礎架構即程式碼