匯出及查看預覽結果

本頁說明如何匯出及查看預覽結果。預覽畫面會說明啟動特定 Terraform 設定的動作。建立或更新部署作業前,您可以先預覽部署作業,確認預計變更的內容。

如要查看的預覽尚未建立,請參閱「預覽部署作業」。

本頁面假設您已熟悉 Terraform。詳情請參閱「Terraform 和 Infrastructure Manager」。

事前準備

  1. 啟用 Infra Manager
  2. 請確認您具備匯出預覽畫面所需的 IAM 權限:roles/config.admin
  3. 建立預覽部署作業

匯出預覽結果

如要查看預覽結果,請先匯出結果。接著使用適當工具查看匯出的結果。

如要匯出預先發布版,該版本的狀態必須為 SUCCEEDEDSTALE。您可以使用說明或清單指令,查看預覽版的目前狀態。

使用下列指令匯出預覽結果,並儲存到本機:

gcloud infra-manager previews export projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID

取代:

  • PROJECT_ID:Infrastructure Manager 執行的專案 ID。
  • LOCATION:Infra Manager 的執行位置。如需有效位置清單,請參閱「Infrastructure Manager 位置」。
  • PREVIEW_ID:您指定的預覽 ID。如要進一步瞭解預覽 ID 的限制,請參閱「預覽名稱」。

查看預覽結果

結果會匯出為兩種格式:二進位計畫檔案JSON 表示法。您可以選擇任一格式查看結果。如要查看結果,請使用適合該格式的工具。

查看二進位方案檔案

如要查看二進位計畫檔案,請按照下列步驟操作:

  1. 確認您已安裝 Terraform CLI

  2. 確認您用來建立預覽版本的 Terraform 設定位於本機,並已透過 terraform init 初始化。

  3. 使用 terraform show 列印建議的行程。

查看 JSON 表示法

如要查看 JSON 表示法,可以使用 IDE 或 jq 等工具。

如要強制執行政策限制,可以使用 JSON 表示法搭配 Terraform vet 等工具。

查看資源變更和漂移詳細資料

您可以透過預覽畫面查看部署作業的資源差異。查看部署作業的資源差異,有助於確認設定變更是否為預期,以及在部署作業透過特定預覽版本更新時,部署作業的變更方式

建立預覽時,您可以使用 Infra Manager API 查看資源的變更,同時更新部署作業。

查看資源漂移

如要查看資源差異,請呼叫 ListResourceDrifts

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
"https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID/resourceDrifts"

取代:

  • PROJECT_ID:預覽部署作業所在 Google Cloud 專案的 ID。
  • LOCATION:預覽部署的區域或可用區。
  • PREVIEW_ID:預覽部署的 ID。

結果如下所示:

{
    "resourceDrifts": [
        {
            "name": "projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID/resourceDrifts/RESOURCE_DRIFT_ID",
            "terraformInfo": {
                "address": "google_resource_type.resource_name",
                "type": "google_resource_type",
                "resourceName": "resource_name",
                "provider": "registry.terraform.io/hashicorp/google"
            },
            "propertyDrifts": [
                {
                    "path": "$.json_path_to_property_field",
                    "before": "config-defined-state",
                    "after": "remote-state"
                }
            ]
        }
    ]
}

查看偏移詳細資料

如要查看偏移詳細資料,請呼叫 GetResourceDrift

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
"https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID/resourceDrifts/RESOURCE_DRIFT_ID"

取代:

  • PROJECT_ID:預覽部署作業所在 Google Cloud 專案的 ID。
  • LOCATION:預覽部署的區域或可用區。
  • PREVIEW_ID:預覽部署的 ID。
  • RESOURCE_DRIFT_ID:漂移的 ID。

結果如下所示:

{
    "name": "projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID/resourceDrifts/RESOURCE_DRIFT_ID",
    "terraformInfo": {
        "address": "google_resource_type.resource_name",
        "type": "google_resource_type",
        "resourceName": "resource_name",
        "provider": "registry.terraform.io/hashicorp/google"
    },
    "propertyDrifts": [
        {
            "path": "$.json_path_to_property_field",
            "before": "config-defined-state",
            "after": "remote-state"
        }
    ]
}

預覽資源變更

您可以透過預覽功能,查看從預覽更新部署後,資源會如何變更。

查看資源變更

如要查看預覽部署作業對資源的影響,請呼叫 ListResourceChanges

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
"https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID/resourceChanges"

取代:

  • PROJECT_ID:預覽部署作業所在 Google Cloud 專案的 ID。
  • LOCATION:預覽部署的區域或可用區。
  • PREVIEW_ID:預覽部署的 ID。
  • RESOURCE_CHANGE_ID:資源變更的 ID。

結果如下所示:

{
    "resourceChanges": [
        {
            "name": "projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID/resourceChanges/RESOURCE_CHANGE_ID",
            "terraformInfo": {
                "address": "google_resource_type.resource_name",
                "type": "google_resource_type",
                "resourceName": "resource_name",
                "provider": "registry.terraform.io/hashicorp/google",
                "actions": [
                    "update"
                ]
            },
            "intent": "UPDATE",
            "propertyChanges": [
                {
                    "path": "$.json_path_to_property_field1",
                    "before": "true"
                },
                {
                    "path": "$.json_path_to_property_field2",
                    "before": "old value",
                    "after": "new value"
                }
            ]
        }
    ]
}

查看資源變更的詳細資料

如要查看資源變更的詳細資料,請呼叫 GetResourceChange

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
"https://config.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID/resourceChanges/RESOURCE_CHANGE_ID"

取代:

  • PROJECT_ID:預覽部署作業所在 Google Cloud 專案的 ID。
  • LOCATION:預覽部署的區域或可用區。
  • PREVIEW_ID:預覽部署的 ID。
  • RESOURCE_CHANGE_ID:資源變更的 ID。

結果如下所示:

{
    "name": "projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID/resourceChanges/RESOURCE_CHANGE_ID",
    "terraformInfo": {
        "address": "google_resource_type.resource_name",
        "type": "google_resource_type",
        "resourceName": "resource_name",
        "provider": "registry.terraform.io/hashicorp/google",
        "actions": [
            "update"
        ]
    },
    "intent": "UPDATE",
    "propertyChanges": [
        {
            "path": "$.json_path_to_property_field1",
            "before": "true"
        },
        {
            "path": "$.json_path_to_property_field2",
            "before": "old value",
            "after": "new value"
        }
    ]
}

後續步驟