匯入現有 Terraform

Application Design Center 可讓您將現有的多產品Google Cloud Terraform 設定,直接匯入應用程式範本,不必先將程式碼重組為個別元件模組,或發布至目錄。

單一產品 Terraform 模組會以目錄元件的形式匯入,並在設計畫布上連結。多產品 Terraform 設定則不同,它是根模組,可跨多個 Google Cloud 產品佈建資源。如要將單一產品模組匯入為元件,請參閱「匯入元件」。

將現有的 Terraform 設定匯入 App Design Center,即可執行下列操作:

  • 將現有的 Terraform 設定納入 App Design Center 應用程式生命週期管理,並在 App Hub 自動註冊已部署的資源。
  • 建立不可變更的應用程式範本修訂版本,為 Terraform 設定建立版本。
  • 使用 Infrastructure Manager 預覽及部署應用程式,或將 Terraform 檔案匯出至 Cloud Storage。

建立範本修訂版本後,您可以透過下列任一方式使用:

  • 直接部署:根據修訂版本建立應用程式、預覽應用程式以取得評估報告,然後部署應用程式。您不需要先將範本發布至目錄、共用範本,或尋找共用範本。
  • 透過目錄重複使用:將修訂版本發布至目錄,新增為複合應用程式範本的元件,然後匯出複合範本的 Terraform。詳情請參閱「將應用程式範本發布至目錄」。

事前準備

如要執行本文件中的工作,請要求管理員在啟用應用程式管理功能的資料夾或管理專案中,授予您必要角色,如下表所示:

工作 必要的角色
建立、匯入、匯出應用程式範本和範本修訂版本,以及建立快照 App Design Center 管理員 (roles/designcenter.admin),或
App Design Center 使用者 (roles/designcenter.user)
建立、部署及匯出應用程式 應用程式管理員 (roles/designcenter.applicationAdmin) 或
應用程式編輯者 (roles/designcenter.applicationEditor)

如要進一步瞭解角色,請參閱「使用 Identity and Access Management 控管存取權」。

將 Terraform 根模組 (.tf 檔案和任何支援檔案,例如 .json 檔案) 儲存在下列其中一個來源:

  • Cloud Storage bucket。
  • Developer Connect 存放區。
  • 公開 Git 存放區。
  • 含有檔案的本機 YAML 或 JSON 檔案。

將 Terraform 匯入應用程式範本

請使用 Google Cloud CLI 完成下列步驟,建立應用程式範本、匯入現有的 Terraform 設定,以及建立不可變更的範本修訂版本。

  1. 在空間中建立應用程式範本。

    gcloud design-center spaces application-templates create APPLICATION_TEMPLATE \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE \
        --display-name=DISPLAY_NAME
    

    更改下列內容:

    • APPLICATION_TEMPLATE:要建立的應用程式範本 ID。
    • PROJECT:您的管理專案 ID。
    • LOCATION:您的位置 ID。
    • SPACE:您的聊天室 ID。
    • DISPLAY_NAME:應用程式範本的顯示名稱。

    詳情請參閱「gcloud design-center spaces application-templates create」。

  2. 從下列其中一個來源,將 Terraform 設定匯入應用程式範本:

    • 如要從 Cloud Storage bucket 匯入,請執行下列指令:

      gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \
          --project=PROJECT \
          --location=LOCATION \
          --space=SPACE \
          --gcs-uri=GCS_URI \
          --raw-terraform-import-enabled
      
    • 如要從 Developer Connect 存放區匯入,請執行下列指令:

      gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \
          --project=PROJECT \
          --location=LOCATION \
          --space=SPACE \
          --developer-connect-repo-uri=DEVELOPER_CONNECT_REPO_URI \
          --developer-connect-branch=DEVELOPER_CONNECT_BRANCH \
          --developer-connect-dir=DEVELOPER_CONNECT_DIR \
          --raw-terraform-import-enabled
      
    • 如要從公開 Git 存放區匯入,請執行下列指令:

      gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \
          --project=PROJECT \
          --location=LOCATION \
          --space=SPACE \
          --git-source-repo=GIT_SOURCE_REPO \
          --git-source-ref-tag=GIT_SOURCE_REF_TAG \
          --git-source-dir=GIT_SOURCE_DIR \
          --raw-terraform-import-enabled
      
    • 如要從含有 IaCModule 酬載的本機 YAML 或 JSON 檔案匯入,請執行下列指令:

      gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \
          --project=PROJECT \
          --location=LOCATION \
          --space=SPACE \
          --iac-module-from-file=IAC_MODULE_FILE \
          --raw-terraform-import-enabled
      

    更改下列內容:

    • APPLICATION_TEMPLATE:應用程式範本 ID。
    • PROJECT:您的管理專案 ID。
    • LOCATION:您的位置 ID。
    • SPACE:您的聊天室 ID。
    • GCS_URI:包含 Terraform 檔案的 Cloud Storage URI,格式為 gs://BUCKET_NAME/FOLDER_PATH。
    • DEVELOPER_CONNECT_REPO_URI:Developer Connect 存放區連結 URI,格式為 projects/PROJECT/locations/LOCATION/connections/CONNECTION/gitRepositoryLinks/REPO_LINK。
    • DEVELOPER_CONNECT_BRANCH:Developer Connect 存放區中的分支版本名稱。或者,您也可以指定 --developer-connect-ref-tag 或 --developer-connect-commit-sha。
    • DEVELOPER_CONNECT_DIR:Developer Connect 存放區中的目錄路徑。
    • GIT_SOURCE_REPO:公開 Git 存放區的 HTTPS 網址。
    • GIT_SOURCE_REF_TAG:公開 Git 存放區中的 Git 參照或標記。
    • GIT_SOURCE_DIR:公開 Git 存放區中的目錄路徑。
    • IAC_MODULE_FILE:本機 YAML 或 JSON 檔案的路徑,其中包含 Terraform 檔案。
  3. 建立應用程式範本的快照,產生不可變更的應用程式範本修訂版本,以便建立及部署應用程式。

    gcloud design-center spaces application-templates snapshot APPLICATION_TEMPLATE \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE
    

    更改下列內容:

    • APPLICATION_TEMPLATE:應用程式範本 ID。
    • PROJECT:您的管理專案 ID。
    • LOCATION:您的位置 ID。
    • SPACE:您的聊天室 ID。

    輸出內容包含建立的應用程式範本修訂版本 URI,格式為 projects/PROJECT/locations/LOCATION/spaces/SPACE/applicationTemplates/APPLICATION_TEMPLATE/revisions/REVISION。

使用範本建立及部署應用程式

建立匯入 Terraform 範本的快照修訂版本後,您可以建立應用程式草稿、提供輸入變數值,以及部署應用程式。

  1. 根據應用程式範本修訂版本建立應用程式草稿。

    gcloud design-center spaces applications create APPLICATION \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE \
        --source-application-template-revision=SOURCE_APPLICATION_TEMPLATE_REVISION \
        --deployment-project=DEPLOYMENT_PROJECT \
        --deployment-region=DEPLOYMENT_REGION \
        --app-parameters=APP_PARAMETERS \
        --scope-type=SCOPE_TYPE
    

    更改下列內容:

    • APPLICATION:要建立的應用程式 ID。
    • PROJECT:您的管理專案 ID。
    • LOCATION:您的位置 ID。
    • SPACE:您的聊天室 ID。
    • SOURCE_APPLICATION_TEMPLATE_REVISION:snapshot 指令傳回的應用程式範本修訂版本 URI。
    • DEPLOYMENT_PROJECT:部署 Terraform 資源的目標專案 ID。
    • DEPLOYMENT_REGION:部署 Terraform 資源的目標區域。
    • APP_PARAMETERS:選用。Terraform 根模組的輸入變數鍵/值組合 (例如 key=KEY,value=VALUE),或含有應用程式參數的 YAML 或 JSON 檔案路徑。
    • SCOPE_TYPE:應用程式的範圍,可以是 regional 或 global。

    如要進一步瞭解如何管理應用程式,請參閱「管理應用程式」。

  2. 預覽及部署應用程式。如需逐步說明,請參閱「部署應用程式」。

將 Terraform 程式碼匯出至 Cloud Storage

您可以將 Terraform 檔案從應用程式範本、應用程式範本修訂版本或應用程式匯出至 Cloud Storage bucket。如果您想使用自己的 CI/CD 工具執行 Terraform,或在版本管控中保留副本,請匯出。

  • 如要從應用程式範本草稿匯出 Terraform 檔案,請執行下列指令:

    gcloud design-center spaces application-templates export APPLICATION_TEMPLATE \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE \
        --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URI
    
  • 如要從應用程式範本修訂版本匯出 Terraform 檔案,請執行下列指令:

    gcloud design-center spaces application-templates revisions export REVISION \
        --application-template=APPLICATION_TEMPLATE \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE \
        --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URI
    
  • 如要從應用程式匯出 Terraform 檔案 (包括填入已設定應用程式參數的 zz_adc_inputs.auto.tfvars.json),請執行下列指令:

    gcloud design-center spaces applications export APPLICATION \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE \
        --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URI
    

更改下列內容:

  • APPLICATION_TEMPLATE:應用程式範本 ID。
  • REVISION:應用程式範本修訂版本 ID。
  • APPLICATION:應用程式 ID。
  • PROJECT:您的管理專案 ID。
  • LOCATION:您的位置 ID。
  • SPACE:您的聊天室 ID。
  • ARTIFACT_LOCATION_GCS_URI:目的地 Cloud Storage URI,格式為 gs://BUCKET_NAME/EXPORT_FOLDER。

後續步驟