本頁說明如何匯出及查看預覽結果。預覽畫面會說明啟動特定 Terraform 設定的動作。建立或更新部署作業前,您可以先預覽部署作業,確認預計變更的內容。
如要查看的預覽尚未建立,請參閱「預覽部署作業」。
本頁面假設您已熟悉 Terraform。詳情請參閱「Terraform 和 Infrastructure Manager」。
事前準備
- 啟用 Infra Manager。
- 請確認您具備匯出預覽畫面所需的 IAM 權限:
roles/config.admin
。 - 建立預覽部署作業。
匯出預覽結果
如要查看預覽結果,請先匯出結果。接著使用適當工具查看匯出的結果。
如要匯出預先發布版,該版本的狀態必須為 SUCCEEDED
或 STALE
。您可以使用說明或清單指令,查看預覽版的目前狀態。
使用下列指令匯出預覽結果,並儲存到本機:
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 表示法。您可以選擇任一格式查看結果。如要查看結果,請使用適合該格式的工具。
查看二進位方案檔案
如要查看二進位計畫檔案,請按照下列步驟操作:
確認您已安裝 Terraform CLI。
確認您用來建立預覽版本的 Terraform 設定位於本機,並已透過
terraform init
初始化。使用
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"
}
]
}