Neste tutorial, mostramos como importar recursos Google Cloud 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) em 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 para o 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 compatível do Terraform.
Custos
Neste tutorial, usamos os seguintes componentes faturáveis do Google Cloud:
Antes de começar
-
Faça login na sua Conta do Google.
Se você ainda não tiver uma, inscreva-se agora.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative a API Infrastructure Manager:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable config.googleapis.com
-
Configure a autenticação:
-
Verifique se você tem o papel do IAM de criação de contas de serviço
(
roles/iam.serviceAccountCreator) e o papel de administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin). Saiba como conceder papéis. -
Crie a conta de serviço:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Substitua
SERVICE_ACCOUNT_NAMEpor um nome para a conta de serviço. -
Conceda o papel do IAM
roles/config.agentà conta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent
Substitua:
SERVICE_ACCOUNT_NAME: o nome da conta de serviço.PROJECT_ID: o ID do projeto em que você criou a conta de serviço
-
Verifique se você tem o papel do IAM de criação de contas de serviço
(
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative a API Infrastructure Manager:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable config.googleapis.com
-
Configure a autenticação:
-
Verifique se você tem o papel do IAM de criação de contas de serviço
(
roles/iam.serviceAccountCreator) e o papel de administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin). Saiba como conceder papéis. -
Crie a conta de serviço:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Substitua
SERVICE_ACCOUNT_NAMEpor um nome para a conta de serviço. -
Conceda o papel do IAM
roles/config.agentà conta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent
Substitua:
SERVICE_ACCOUNT_NAME: o nome da conta de serviço.PROJECT_ID: o ID do projeto em que você criou a conta de serviço
-
Verifique se você tem o papel do IAM de criação de contas de serviço
(
- Instale uma versão compatível do Terraform.
Implantar recursos em Google Cloud
O recurso Google Cloud que você implanta neste tutorial é uma VPC. Esta seção mostra como implantar o recurso para usar como exemplo para importar 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 Infrastructure Manager
para ver 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 aos 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
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 } EOFImplante 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 for provisionada, você vai ver uma saída que começa com o texto Creation complete.
A VPC definida na configuração do Terraform agora está 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 Infrastructure Manager
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, armazene a configuração do Terraform em um bucket de armazenamento, um repositório Git público ou na sua máquina local.
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 ..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_ACCOUNTQuando a implantação for concluída, você 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 fazer mudanças no estado dela.
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 Gerenciador de infraestrutura
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 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
Faça upload da configuração do Terraform para o bucket do Cloud Storage.
Agora que você fez upload do arquivo de estado do Terraform, também é necessário fazer 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évia do Infra Manager for 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 vai criar ou excluir recursos para corresponder ao arquivo de estado.
É necessário desbloquear a implantação para 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.
Execute o comando a seguir para liberar o bloqueio da implantação.
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ê concluiu a importação dos recursos implantados. A VPC implantada agora é gerenciada pelo Infra Manager.
Visualizar mudanças nos recursos
Execute uma prévia da implantação para confirmar se o estado do Terraform e os recursos implantados em Google Cloud estão sincronizados.
Crie uma prévia usando o seguinte comando:
gcloud infra-manager previews create projects/PROJECT_ID/locations/us-central1/previews/IMPORT_DEPLOYMENT_PREVIEW_NAME \ --gcs-source gs://import-deployment-configuration \ --deployment projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \ --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --location us-central1Confira os detalhes da prévia para garantir que ela foi concluída.
gcloud infra-manager previews describe projects/PROJECT_ID/locations/us-central1/previews/IMPORT_DEPLOYMENT_PREVIEW_NAMEExporte a prévia para revisar as mudanças.
SIGNED_BIN_PLAN_URL=$(gcloud infra-manager previews export projects/PROJECT_ID/locations/us-central1/previews/IMPORT_DEPLOYMENT_PREVIEW_NAME --format "get(result.binarySignedUri)") curl -X GET --output tfplan.out $SIGNED_BIN_PLAN_URLVerifique se a configuração está presente localmente e inicializada com o comando a seguir:
terraform initExecute "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 sincronizados, terraform show vai gerar a seguinte saída, validando que o Infrastructure Manager não vê 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.
Agora você importou os recursos implantados para que sejam gerenciados pelo Infra Manager. Por exemplo, agora é possível usar o Infra Manager para atualizar a implantação.
Você também pode atualizar a implantação para validar se ela foi importada 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
Excluir um projeto do Google Cloud :
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