Importar recursos implantados para o Infrastructure Manager


Este tutorial demonstra como importar Google Cloud recursos para uma implantação do Infrastructure Manager. Só é possível importar recursos que foram provisionados usando o Terraform.

Se você tiver uma configuração do Terraform e ainda não a tiver implantado no Google Cloud, consulte implantar infraestrutura usando o Infrastructure Manager.

Este tutorial começa com a implantação de uma nuvem privada virtual (VPC) no Google Cloud usando a CLI do Terraform. Em seguida, este tutorial demonstra como importar esses recursos implantados para o Infrastructure Manager, para que eles possam ser gerenciados como uma implantação do Infrastructure Manager.

Use o exemplo deste tutorial para entender como importar outros recursosGoogle Cloud para o Infra Manager. Para importar a implantação no Infra Manager, a configuração do Terraform usada para provisionar os recursos precisa obedecer às restrições, e os recursos precisam ter sido provisionados usando uma versão do Terraform com suporte.

Custos

Neste tutorial, usamos os seguintes componentes faturáveis do Google Cloud:

Antes de começar

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Infrastructure Manager API:

    gcloud services enable config.googleapis.com
  7. Set up authentication:

    1. Create the service account:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Replace SERVICE_ACCOUNT_NAME with a name for the service account.

    2. Grant the roles/config.agent IAM role to the service account:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account
  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  11. Make sure that billing is enabled for your Google Cloud project.

  12. Enable the Infrastructure Manager API:

    gcloud services enable config.googleapis.com
  13. Set up authentication:

    1. Create the service account:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Replace SERVICE_ACCOUNT_NAME with a name for the service account.

    2. Grant the roles/config.agent IAM role to the service account:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account
  14. Instale uma versão com suporte do Terraform.

Implantar recursos em Google Cloud

O recurso Google Cloud implantado neste tutorial é um VPC. Esta seção mostra como implantar o recurso para usar como exemplo de importação de recursos implantados no Infra Manager.

Neste tutorial, usamos a região us-central1. Se você quiser usar outra região, use qualquer um dos locais em que o Infra Manager é executado. Consulte Locais do Gerenciador de infraestrutura para conferir a lista de locais válidos.

Conceder permissões para recursos na configuração

Você concedeu as permissões necessárias para executar o Infra Manager, mas também precisa conceder permissões específicas para os recursos descritos na configuração que está implantando.

Conceda permissões para criar a rede VPC, que é o recurso definido na configuração do Terraform:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/compute.networkAdmin

Substitua:

  • SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
  • PROJECT_ID: o ID do projeto.

Implantar recursos usando a CLI do Terraform

  1. Crie uma rede VPC usando a seguinte configuração do Terraform. Para isso, execute o seguinte comando:

    mkdir vpc_to_import
    cd vpc_to_import
    cat <<EOF > main.tf
    variable "project_id" {
      type = string
    }
    
    resource "google_compute_network" "vpc_network" {
      name = "my-custom-mode-network"
      project = var.project_id
    }
    EOF
    
  2. Implante a configuração usando a CLI do Terraform com o seguinte comando:

    terraform init
    echo "**************  TERRAFORM APPLY  ******************"
    terraform apply -var="project_id=PROJECT_ID" -auto-approve
    cd ..
    

Quando a VPC é provisionada, você vê uma saída que começa com o texto Creation complete.

A VPC definida na configuração do Terraform agora é implantada em Google Cloud. O Terraform cria um arquivo de estado, que fica no sistema de arquivos ao lado do arquivo main.tf.

Criar uma implantação de marcador de posição no Gerenciador de infraestrutura

Para importar recursos para o Infra Manager, você precisa de uma implantação existente no Infra Manager.

Este tutorial usa um bucket de armazenamento para armazenar a configuração do Terraform. Se você estiver usando este tutorial para entender como importar outras implantações para o Infra Manager, poderá armazenar a configuração do Terraform em um bucket de armazenamento, repositório público do Git ou na sua máquina local.

  1. Adicione uma configuração vazia do Terraform ao bucket de armazenamento:

    gcloud storage buckets create gs://import-deployment-configuration --project=PROJECT_ID
    
    mkdir placeholder_deployment
    cd placeholder_deployment
    cat <<EOF > main.tf
    EOF
    
    gcloud storage cp main.tf gs://import-deployment-configuration
    cd ..
    
  2. Crie uma implantação usando o Infra Manager.

    gcloud infra-manager deployments apply projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \
    --gcs-source gs://import-deployment-configuration \
    --input-values project_id=PROJECT_ID \
    --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT
    

    Quando a implantação for concluída, você vai ver:

    Creating the deployment...done
    

Agora você tem uma implantação do Infra Manager. Em seguida, adicione o arquivo de estado e a configuração do Terraform a essa implantação para que ela gerencie a VPC.

Importar o arquivo de estado e a configuração do Terraform

Para gerenciar o recurso implantado (a VPC) usando o Infra Manager, adicione o arquivo de estado e a configuração do Terraform ao Infra Manager.

Bloquear a implantação

Bloqueie a implantação do Infra Manager para poder fazer mudanças no estado.

LOCK_ID=$(gcloud infra-manager deployments lock projects/PROJECT_ID/locations/us-central1/deployments/import-deployment --format="get(lockId)")

Importar o arquivo de estado do Terraform para o Infra Manager

Importe o arquivo de estado dos recursos implantados. Esse arquivo de estado foi criado pelo Terraform quando você implantou a VPC usando a CLI do Terraform.

Faça o upload do arquivo de estado do Terraform para a implantação do Infra Manager.

SIGNED_STATE_UPLOAD_URL=$(gcloud infra-manager deployments import-statefile projects/PROJECT_ID/locations/us-central1/deployments/import-deployment --lock-id ${LOCK_ID} --format="get(signedUri)")
cd vpc_to_import
curl -s -X PUT --upload-file terraform.tfstate $SIGNED_STATE_UPLOAD_URL

Fazer upload da configuração do Terraform para o bucket do Cloud Storage

Agora que você fez o upload do arquivo de estado do Terraform, também é necessário fazer o upload da configuração do Terraform usada para criar a rede VPC. O Infra Manager precisa do arquivo de estado do Terraform para que, quando uma pré-visualização do Infra Manager seja executada, não sejam encontradas mudanças nos recursos.

Faça upload da configuração do Terraform para o Cloud Storage usando o seguinte comando:

gcloud storage cp main.tf gs://import-deployment-configuration

Desbloquear a implantação

Se você estiver usando este tutorial para entender como importar recursos para o Infra Manager, verifique se o arquivo de estado e a configuração do Terraform não têm diferenças. Se houver diferenças entre o arquivo de estado e a configuração do Terraform, verifique se o arquivo de estado descreve os recursos que você quer implantar. Ao desbloquear a implantação, se houver diferenças entre o arquivo de estado e a configuração do Terraform, o Infra Manager da implantação cria ou exclui recursos para corresponder ao arquivo de estado.

É necessário desbloquear a implantação para poder gerenciar os recursos usando o Infra Manager. Neste tutorial, o arquivo de estado e a configuração do Terraform descrevem a mesma configuração. Portanto, o Infra Manager não cria nem exclui recursos.

Libere a trava da implantação executando o seguinte.

gcloud infra-manager deployments unlock projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \
--project PROJECT_ID \
--location us-central1 \
--lock-id ${LOCK_ID}

Agora que o arquivo de estado e a configuração do Terraform foram adicionados à implantação do Infra Manager, você terminou de importar os recursos implantados. A VPC implantada agora é gerenciada pelo Infra Manager.

Visualizar mudanças de recursos

Execute uma prévia na implantação para confirmar que o estado do Terraform e os recursos implantados em Google Cloud estão sincronizados.

  1. Crie uma prévia usando o seguinte comando:

    gcloud infra-manager previews create projects/PROJECT_ID/locations/us-central1/previews/import-deployment-preview \
    --gcs-source gs://import-deployment-configuration \
    --input-values project_id=PROJECT_ID \
    --deployment projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \
    --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    
  2. Confira os detalhes da visualização para garantir que ela foi concluída.

    gcloud infra-manager previews describe projects/PROJECT_ID/locations/us-central1/previews/import-deployment-preview
    
  3. Exporte a visualização para analisar as mudanças.

    SIGNED_BIN_PLAN_URL=$(gcloud infra-manager previews export projects/PROJECT_ID/locations/us-central1/previews/import-deployment-preview --format "get(result.binarySignedUri)")
    curl -X GET --output tfplan.out $SIGNED_BIN_PLAN_URL
    
  4. Verifique se a configuração está presente localmente e inicializada com o seguinte comando:

    terraform init
    
  5. Execute o Terraform show para analisar as mudanças entre o estado de implantação do Infrastructure Manager e a configuração.

    terraform show tfplan.out
    

Se o recurso da VPC em Google Cloud e o arquivo de estado estiverem em sincronização, o terraform show vai gerar o seguinte, validando que o Infrastructure Manager não detecta nenhuma mudança entre o estado de implantação e a configuração. Você vai ver uma saída semelhante a esta:

No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.

Você importou os recursos implantados para que eles sejam gerenciados pelo Infra Manager. Por exemplo, agora você pode usar o Infra Manager para atualizar a implantação.

Você também pode atualizar a implantação para validar se ela foi importada corretamente para o Infra Manager.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Excluir o projeto

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

Excluir recursos individuais

Exclua a VPC e os metadados sobre a implantação:

gcloud infra-manager deployments delete projects/PROJECT_ID/locations/us-central1/deployments/quickstart-deployment

A seguir