Exportar e conferir os resultados da visualização

Nesta página, descrevemos como exportar e analisar os resultados de uma prévia. Uma prévia descreve as ações para ativar uma configuração específica do Terraform. Antes de criar ou atualizar uma implantação, é possível visualizar o que está planejado para mudar.

Se você ainda não criou a visualização que quer acessar, consulte Visualizar uma implantação.

Nesta página, presumimos que você já conhece o Terraform. Para mais detalhes, consulte Terraform e Infrastructure Manager.

Antes de começar

  1. Ative o Infra Manager.
  2. Verifique se você tem as permissões do IAM necessárias para exportar pré-estreias: roles/config.admin.
  3. Crie uma implantação de prévia.

Exportar os resultados da prévia

Para analisar os resultados de uma prévia, primeiro exporte-os. Em seguida, confira os resultados exportados usando uma ferramenta adequada.

Para exportar uma prévia, o estado dela precisa ser SUCCEEDED ou STALE. É possível conferir o estado atual de uma prévia usando os comandos "describe" ou "list".

Exporte os resultados de uma prévia e salve-os localmente usando o seguinte comando:

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

Substitua:

  • PROJECT_ID: o ID do projeto em que o Infrastructure Manager é executado.
  • LOCATION: o local em que o Infra Manager é executado. Consulte Locais do Infrastructure Manager para ver a lista de locais válidos.
  • PREVIEW_ID: o identificador de prévia especificado. Consulte Nome da prévia para detalhes sobre as restrições do identificador de prévia.

Ver os resultados da prévia

Os resultados são exportados em dois formatos: o arquivo de plano binário e a representação JSON. Você pode usar qualquer um dos formatos para analisar os resultados. Para conferir os resultados, use uma ferramenta adequada para o formato.

Revisar o arquivo de plano binário

Para conferir o arquivo de plano binário:

  1. Verifique se você instalou a CLI do Terraform.

  2. Verifique se a configuração do Terraform usada para criar a prévia está presente localmente e inicializada com terraform init.

  3. Imprima o plano proposto usando terraform show.

Analisar a representação JSON

Para conferir a representação JSON, use seu ambiente de desenvolvimento integrado (IDE) ou ferramentas como jq.

Para aplicar restrições de política, use a representação JSON com ferramentas como Terraform vet.

Ver detalhes da mudança e do desvio de recursos

É possível usar prévias para conferir o desvio de recursos da sua implantação. Ver o desvio de recursos das implantações é útil para verificar se as mudanças nas configurações são intencionais e para resumir como a implantação vai mudar quando for atualizada com uma visualização específica.

Ao criar uma prévia, você usa a API do Infra Manager para conferir as mudanças nos recursos à medida que atualiza as implantações.

Ver desvio de recursos

Para conferir o desvio de recursos, chame 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"

Substitua:

  • PROJECT_ID: o identificador do projeto Google Cloud em que a implantação de prévia está localizada.
  • LOCATION: a região ou zona da implantação de prévia.
  • PREVIEW_ID: o identificador da sua implantação de prévia.

O resultado será semelhante a este:

{
    "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"
                }
            ]
        }
    ]
}

Ver detalhes de uma derivação

Para conferir os detalhes de um drift, chame 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"

Substitua:

  • PROJECT_ID: o identificador do projeto Google Cloud em que a implantação de prévia está localizada.
  • LOCATION: a região ou zona da implantação de prévia.
  • PREVIEW_ID: o identificador da sua implantação de prévia.
  • RESOURCE_DRIFT_ID: o identificador da sua deriva.

O resultado será semelhante a este:

{
    "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"
        }
    ]
}

Visualizar mudanças nos recursos

Use as visualizações para verificar como seus recursos vão mudar se você atualizar uma implantação da visualização.

Conferir mudanças de recursos

Para ver como a implantação de prévia afetaria seus recursos, chame 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"

Substitua:

  • PROJECT_ID: o identificador do projeto Google Cloud em que a implantação de prévia está localizada.
  • LOCATION: a região ou zona da implantação de prévia.
  • PREVIEW_ID: o identificador da sua implantação de prévia.
  • RESOURCE_CHANGE_ID: o identificador da mudança de recurso.

O resultado será semelhante a este:

{
    "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"
                }
            ]
        }
    ]
}

Conferir detalhes de uma mudança de recurso

Para conferir os detalhes de uma mudança em um recurso, chame 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"

Substitua:

  • PROJECT_ID: o identificador do projeto Google Cloud em que a implantação de prévia está localizada.
  • LOCATION: a região ou zona da implantação de prévia.
  • PREVIEW_ID: o identificador da sua implantação de prévia.
  • RESOURCE_CHANGE_ID: o identificador da mudança de recurso.

O resultado será semelhante a este:

{
    "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"
        }
    ]
}

A seguir