使用從控制台下載的 Terraform 部署基礎架構

Google Cloud Setup 可協助管理員使用引導式流程設定Google Cloud 基礎架構,並直接從 Google Cloud 控制台部署,或以 Terraform 格式下載。

本文件可協助您部署 Google Cloud 設定 Terraform 檔案。

事前準備

請參閱「使用 Terraform 的最佳做法」,其中包含在團隊成員和工作流程中,有效運用 Terraform 進行開發的指南。

如果您已透過點選控制台中的「Deploy」(部署) 按鈕部署基礎設定,現在想要使用自己的管道部署已下載的 Terraform 設定,則必須執行下列操作:

  • 下載控制台產生的 Terraform 狀態檔案。
  • 在您自己的管道程序中加入下載的狀態檔案。

詳情請參閱「從控制台部署後,部署下載的 Terraform」。

使用 Cloud Shell 部署 Terraform

Cloud Shell 已預先安裝 Terraform 並完成驗證,讓您能快速開始使用。

  1. 在控制台內的設定指南中,按一下「Download as Terraform」,然後儲存設定。
  2. 開啟 Cloud Shell
  3. 在 Cloud Shell 中建立目錄並前往該目錄:

    mkdir cloud-foundation-example && cd cloud-foundation-example
    
  4. 上傳您在步驟 1 下載的 Terraform 設定。

    在 Cloud Shell 的「More」選單中,選取「Upload」,然後按一下「Choose Files」,選取 Terraform 設定檔。將目的地目錄設為先前步驟中建立的資料夾,然後按一下「上傳」

  5. 確認您位於 cloud-foundation-example 目錄。

  6. 建立 Cloud Storage 值區,用於儲存 Terraform 遠端狀態。遠端狀態可讓 Terraform 使用 Cloud Storage 等物件儲存空間,儲存 Terraform 管理基礎架構的狀態資訊。這項設定可提供團隊委派和狀態鎖定等好處。

    如要建立 Cloud Storage 值區,請執行下列指令:

    gcloud storage buckets create gs://tf-state-PROJECT_ID
    
  7. backend.tf 檔案中定義 Terraform 後端設定,並將 PROJECT_ID 替換為上一個步驟中使用的專案 ID。詳情請參閱「在 Cloud Storage 中儲存 Terraform 狀態」。

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. 執行 terraform init。 這個程序會初始化工作目錄,其中包含 Terraform 設定檔和後端。

  9. 執行 terraform plan 即可查看 Terraform 建立的資源。輸出內容範例:

    ...
    Plan: 6 to add, 0 to change, 0 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. 請執行 terraform apply 來套用設定,這樣就能將資源部署至Google Cloud。出現提示時,請輸入 yes

  11. 瀏覽 Google Cloud 控制台,確認您的資源已部署至帳戶或專案。

使用 Cloud Shell 重新部署 Terraform

Terraform 會將部署資源的相關資訊儲存在 Terraform 狀態檔案中。如果您已按照先前的步驟部署設定,強烈建議您重複使用相同的後端,自動偵測、裁剪及更新新匯出的設定所定義的資源。

  1. 在控制台內的設定指南中,按一下「Download as Terraform」,然後儲存設定。
  2. 開啟 Cloud Shell
  3. 在 Cloud Shell 中建立新目錄並前往該目錄:
    mkdir cloud-foundation-example-redeploy && cd cloud-foundation-example-redeploy
    
  4. 上傳您在步驟 1 下載的 Terraform 設定。

    在 Cloud Shell 的「More」選單中,選取「Upload」,然後按一下「Choose Files」,選取 Terraform 設定檔。將目的地目錄設為先前步驟中建立的資料夾,然後按一下「上傳」

  5. 確認您位於 cloud-foundation-example-redeploy 目錄。

  6. 確認先前建立的 Cloud Storage 後端值區和狀態檔案是否存在。

    gcloud storage ls gs://tf-state-PROJECT_ID/terraform/state/
    
    輸出內容範例:
    gs://tf-state-PROJECT_ID/terraform/state/default.tfstate
    

  7. 重新使用相同的值區和前置字串,在 backend.tf 檔案中定義 Terraform 後端設定。

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. 執行 terraform init。 這個程序會初始化工作目錄,其中包含 Terraform 設定檔和後端。

  9. 執行 terraform plan,查看 Terraform 建立、變更或刪除的資源。輸出內容範例:

    ...
    Plan: 2 to add, 3 to change, 4 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. 請執行 terraform apply 來套用設定,這樣就能將資源部署至Google Cloud。出現提示時,請輸入 yes

  11. 瀏覽控制台 Google Cloud ,確認資源已部署至帳戶或專案。

從控制台部署後,部署下載的 Terraform

如果您已使用主控台中的「Deploy」按鈕部署基礎設定,系統會產生 Terraform 狀態檔案。如果您現在想下載 Terraform 設定,並使用自己的管道進行部署,則必須加入控制台部署期間產生的 Terraform 狀態檔案。

如要下載及使用狀態檔案,請按照下列步驟操作:

  1. 如要下載 Terraform 狀態檔案,請按照「管理 Terraform 狀態檔案」中的步驟操作:

    1. 鎖定部署作業
    2. 下載狀態檔案
    3. 解鎖部署作業
  2. 如要將下載的狀態檔案移至 Cloud Storage 值區,請參閱「將 Terraform 狀態儲存在 Cloud Storage 值區」。

  3. 如要重新部署 Terraform 設定,請參閱「使用 Cloud Shell 重新部署 Terraform」一文。

排解 Terraform 部署問題

使用現有資源部署 Terraform

如果下載的 Terraform 設定嘗試建立已存在的資源,Terraform 會退出並顯示 409 錯誤代碼。如要解決這些錯誤,您可以使用Google Cloud 主控台或 gcloud CLI 刪除資源,然後重新套用 Terraform 設定。或者,如果這些資源非常重要且無法刪除,您可以將資源匯入 Terraform 狀態。

使用 Terraform、Cloud Build 和 GitOps 以程式碼的形式管理基礎架構

建議您參閱這個教學課程,瞭解完整操作說明。這個選項適用於尋找策略,以便可預測並重複變更基礎架構的平台管理員和操作人員。本指南假設您已熟悉 Google Cloud、Linux 和 GitHub。此選項的高階步驟如下:

  1. 設定您的 GitHub 存放區。
  2. 設定 Terraform 以將狀態儲存在 Cloud Storage 值區中。
  3. 將權限授予您的 Cloud Build 服務帳戶。
  4. 將 Cloud Build 連線至您的 GitHub 存放區。
  5. 在功能分支版本中變更您的環境設定。
  6. 將變更推行至開發環境。
  7. 將變更推行至實際工作環境。