Este tutorial demonstra como importar Google Cloud recursos para uma implementação do Infrastructure Manager. Só pode importar recursos aprovisionados através do Terraform.
Se tiver uma configuração do Terraform e ainda não a tiver implementado no Google Cloud, consulte o artigo Implemente infraestrutura com o Infrastructure Manager.
Este tutorial começa com a implementação de uma nuvem privada virtual (VPC) no Google Cloud usando a CLI do Terraform. Em seguida, este tutorial demonstra como importar estes recursos implementados para o Infrastructure Manager para que os recursos possam ser geridos como uma implementação do Infrastructure Manager.
Pode usar o exemplo neste tutorial para compreender como importar outros Google Cloud recursos para o Infra Manager. Para importar a implementação para o Infra Manager, a configuração do Terraform usada para aprovisionar os recursos tem de estar em conformidade com as restrições, e os recursos têm de ter sido aprovisionados com uma versão do Terraform suportada.
Implemente recursos em Google Cloud
O Google Cloud recurso que implementa neste tutorial é uma VPC. Esta secção mostra como implementar o recurso a usar como exemplo para importar recursos implementados para o Infra Manager.
Este tutorial usa a região us-central1
. Se quiser usar outra região,
pode usar qualquer uma das localizações onde o Infra Manager é executado. Consulte as localizações do Infrastructure Manager para ver a lista de localizações válidas.
Conceda autorizações para recursos na configuração
Concedeu as autorizações necessárias para executar o Infra Manager, mas também tem de conceder autorizações específicas aos recursos descritos na configuração que está a implementar.
Conceda autorizações para poder 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 o seguinte:
- SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
- PROJECT_ID: o ID do seu projeto.
Implemente recursos através da CLI do Terraform
Crie uma rede VPC com 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
Implemente a configuração através da 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 é aprovisionada, vê um resultado que começa com o texto Creation complete
.
A VPC definida na configuração do Terraform está agora implementada em Google Cloud. O Terraform cria um ficheiro de estado, e este ficheiro encontra-se no sistema de ficheiros junto ao ficheiro main.tf
.
Crie uma implementação de marcador de posição no Infrastructure Manager
Para importar recursos para o Infra Manager, precisa de uma implementação existente no Infra Manager.
Este tutorial usa um contentor de armazenamento para armazenar a configuração do Terraform. Se estiver a usar este tutorial para compreender como importar outras implementações para o Infra Manager, pode armazenar a configuração do Terraform num contentor de armazenamento, num repositório Git público ou na sua máquina local.
Adicione uma configuração do Terraform vazia ao contentor 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 implementação com 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 implementação estiver concluída, vê:
Creating the deployment...done
Agora, tem uma implementação do Infra Manager. Em seguida, tem de adicionar o ficheiro de estado e a configuração do Terraform a esta implementação para que esta implementação faça a gestão da VPC.
Importe o ficheiro de estado e a configuração do Terraform
Para gerir o recurso implementado (a VPC) através do Infra Manager, tem de adicionar o ficheiro de estado e a configuração do Terraform ao Infra Manager.
Bloqueie a implementação
Bloqueie a implementação do Infra Manager para poder fazer alterações ao respetivo estado.
LOCK_ID=$(gcloud infra-manager deployments lock projects/PROJECT_ID/locations/us-central1/deployments/import-deployment --format="get(lockId)")
Importe o ficheiro de estado do Terraform para o Infra Manager
Importe o ficheiro de estado dos recursos implementados. Este ficheiro de estado foi criado pelo Terraform quando implementou a VPC através da CLI do Terraform.
Carregue o ficheiro de estado do Terraform para a implementaçã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
Carregue a configuração do Terraform para o contentor do Cloud Storage
Agora que carregou o ficheiro de estado do Terraform, também tem de carregar a configuração do Terraform que usou para criar a rede VPC. O Infra Manager precisa do ficheiro de estado do Terraform para que, quando é executada uma pré-visualização do Infra Manager, não sejam encontradas alterações aos recursos.
Carregue a configuração do Terraform para o Cloud Storage através do seguinte comando:
gcloud storage cp main.tf gs://import-deployment-configuration
Desbloqueie a implementação
Se estiver a usar este tutorial para compreender como importar recursos para o Infra Manager, certifique-se de que o ficheiro de estado e a configuração do Terraform não têm diferenças. Se existirem diferenças entre o ficheiro de estado e a configuração do Terraform, certifique-se de que o ficheiro de estado descreve os recursos que quer implementar. Quando desbloqueia a implementação, se existirem diferenças entre o ficheiro de estado e a configuração do Terraform, quando desbloqueia a implementação, o Infra Manager cria ou elimina recursos para corresponder ao ficheiro de estado.
Tem de desbloquear a implementação para poder gerir os recursos através do Infra Manager. Neste tutorial, o ficheiro de estado e a configuração do Terraform descrevem a mesma configuração e, por isso, o Infra Manager não cria nem elimina recursos.
Liberte o bloqueio da implementaçã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 ficheiro de estado e a configuração do Terraform foram adicionados à sua implementação do Infra Manager, concluiu a importação dos recursos implementados. A VPC implementada é agora gerida pelo Infra Manager.
Pré-visualize as alterações aos recursos
Execute uma pré-visualização na implementação para confirmar que o estado do Terraform e os recursos implementados no Google Cloud estão sincronizados.
Crie uma pré-visualização com 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-central1
Aceda aos detalhes da pré-visualização para se certificar de que foi concluída com êxito.
gcloud infra-manager previews describe projects/PROJECT_ID/locations/us-central1/previews/IMPORT_DEPLOYMENT_PREVIEW_NAME
Exporte a pré-visualização para rever as alterações.
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_URL
Certifique-se de que a configuração está presente localmente e é inicializada com o seguinte comando:
terraform init
Execute o comando Terraform show para rever as alterações entre o estado de implementação do Infrastructure Manager e a configuração.
terraform show tfplan.out
Se o recurso de VPC e o ficheiro de estado estiverem sincronizados, o terraform show
produz o seguinte resultado, validando que o Infrastructure Manager não deteta alterações entre o estado de implementação e a configuração. Google Cloud Vê um resultado semelhante ao seguinte:
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.
Importou os recursos implementados para que sejam geridos pelo Infra Manager. Por exemplo, já pode usar o Infra Manager para atualizar a implementação.
Também pode atualizar a implementação para validar se a implementação foi importada com êxito para o Infra Manager.