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.
Custos
Este tutorial usa os seguintes componentes faturáveis do Google Cloud:
Antes de começar
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Infrastructure Manager API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable config.googleapis.com
-
Set up authentication:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator
). Learn how to grant roles. -
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
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 accountPROJECT_ID
: the project ID where you created the service account
-
Ensure that you have the Create Service Accounts IAM role
(
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Infrastructure Manager API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable config.googleapis.com
-
Set up authentication:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator
). Learn how to grant roles. -
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
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 accountPROJECT_ID
: the project ID where you created the service account
-
Ensure that you have the Create Service Accounts IAM role
(
- Instale uma versão suportada do Terraform.
- SERVICE_ACCOUNT_NAME: o nome da conta de serviço.
- PROJECT_ID: o ID do seu projeto.
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 ..
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
Crie uma pré-visualização com 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
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
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 --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
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:
Implemente recursos através da CLI do Terraform
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.
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.
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.
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
Elimine o projeto
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Elimine recursos individuais
Elimine a VPC e os metadados sobre a implementação:
gcloud infra-manager deployments delete projects/PROJECT_ID/locations/us-central1/deployments/quickstart-deployment