이 페이지에서는 미리보기 결과를 내보내고 검토하는 방법을 설명합니다. 미리보기는 특정 Terraform 구성을 작동시키는 작업을 설명합니다. 새 배포를 만들거나 배포를 업데이트하기 전에 배포를 미리 보고 변경할 내용을 확인할 수 있습니다.
아직 보려는 미리보기를 만들지 않은 경우 배포 미리보기를 참고하세요.
이 페이지에서는 사용자가 Terraform에 익숙하다고 가정합니다. 자세한 내용은 Terraform 및 Infrastructure Manager를 참고하세요.
시작하기 전에
- Infra Manager 사용 설정
- 미리보기를 내보내는 데 필요한 IAM 권한(
roles/config.admin
)이 있는지 확인합니다. - 미리보기 배포를 만듭니다.
미리보기 결과 내보내기
미리보기 결과를 검토하려면 먼저 결과를 내보내세요. 그런 다음 적절한 도구를 사용하여 내보낸 결과를 확인합니다.
미리보기를 내보내려면 상태가 SUCCEEDED
또는 STALE
여야 합니다. describe 또는 list 명령어를 사용하여 미리보기의 현재 상태를 볼 수 있습니다.
다음 명령어를 사용하여 미리보기 결과를 내보내고 로컬에 저장합니다.
gcloud infra-manager previews export projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID
다음과 같이 바꿉니다.
- PROJECT_ID: 인프라 관리자가 실행되는 프로젝트 ID입니다.
- LOCATION: Infra Manager가 실행되는 위치입니다. 유효한 위치 목록은 인프라 관리자 위치를 참고하세요.
- PREVIEW_ID: 지정한 미리보기 식별자입니다. 미리보기 식별자의 제약조건에 관한 자세한 내용은 미리보기 이름을 참고하세요.
미리보기 결과 보기
결과는 바이너리 계획 파일과 JSON 표현의 두 가지 형식으로 내보내집니다. 두 형식 중 하나를 사용하여 결과를 검토할 수 있습니다. 결과를 보려면 형식에 적합한 도구를 사용하세요.
바이너리 계획 파일 검토
바이너리 계획 파일을 보려면 다음 단계를 따르세요.
Terraform CLI가 설치되어 있는지 확인합니다.
미리보기를 만드는 데 사용한 Terraform 구성이 로컬에 있고
terraform init
로 초기화되었는지 확인합니다.terraform show
를 사용하여 제안된 계획을 출력합니다.
JSON 표현 검토
JSON 표현을 보려면 IDE 또는 jq와 같은 도구를 사용하면 됩니다.
정책 제약 조건을 적용하려면 Terraform vet과 같은 도구와 함께 JSON 표현을 사용하면 됩니다.
리소스 변경사항 및 드리프트 세부정보 보기
미리보기를 사용하여 배포의 리소스 드리프트를 확인할 수 있습니다. 배포의 리소스 드리프트를 확인하면 구성 변경사항이 의도한 것인지 확인하고 특정 미리보기로 배포를 업데이트할 때 배포가 어떻게 변경되는지 요약하는 데 유용합니다.
미리보기를 만들 때 인프라 관리자 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 프로젝트의 식별자입니다.
- LOCATION: 미리보기 배포의 리전 또는 영역입니다.
- PREVIEW_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 프로젝트의 식별자입니다.
- LOCATION: 미리보기 배포의 리전 또는 영역입니다.
- PREVIEW_ID: 미리보기 배포의 식별자입니다.
- RESOURCE_DRIFT_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 프로젝트의 식별자입니다.
- LOCATION: 미리보기 배포의 리전 또는 영역입니다.
- PREVIEW_ID: 미리보기 배포의 식별자입니다.
- RESOURCE_CHANGE_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 프로젝트의 식별자입니다.
- LOCATION: 미리보기 배포의 리전 또는 영역입니다.
- PREVIEW_ID: 미리보기 배포의 식별자입니다.
- RESOURCE_CHANGE_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"
}
]
}