Questo tutorial mostra come importare Google Cloud risorse in un deployment di Infrastructure Manager. Puoi importare solo le risorse provisionate utilizzando Terraform.
Se hai una configurazione Terraform e non l'hai ancora eseguita su Google Cloud, consulta Eseguire il deployment dell'infrastruttura utilizzando Infrastructure Manager.
Questo tutorial inizia con il deployment di un Virtual Private Cloud (VPC) su Google Cloud utilizzando la CLI Terraform. Questo tutorial mostra poi come importare queste risorse di cui è stato eseguito il deployment in Infrastructure Manager in modo che possano essere gestite come deployment di Infrastructure Manager.
Puoi utilizzare l'esempio in questo tutorial per capire come importare altre Google Cloud risorse in Infra Manager. Per importare il deployment in Infra Manager, la configurazione Terraform utilizzata per eseguire il provisioning delle risorse deve essere conforme ai vincoli e le risorse devono essere state sottoposte a provisioning utilizzando una versione di Terraform supportata.
Costi
Questo tutorial utilizza i seguenti componenti fatturabili di Google Cloud:
Prima di iniziare
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Infrastructure Manager API:
gcloud services enable config.googleapis.com
-
Set up authentication:
-
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
-
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Infrastructure Manager API:
gcloud services enable config.googleapis.com
-
Set up authentication:
-
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
-
- Installa una versione supportata di Terraform.
Esegui il deployment delle risorse in Google Cloud
La Google Cloud risorsa di cui esegui il deployment in questo tutorial è una VPC. Questa sezione mostra come eseguire il deployment della risorsa da utilizzare come esempio per l'importazione delle risorse di cui è stato eseguito il deployment in Infra Manager.
Questo tutorial utilizza la regione us-central1
. Se vuoi utilizzare un'altra regione, puoi utilizzare una delle località in cui viene eseguito Infra Manager. Consulta
Località di Infrastructure Manager
per l'elenco delle località valide.
Concedi le autorizzazioni per le risorse nella configurazione
Hai concesso le autorizzazioni necessarie per eseguire Infra Manager, ma devi anche concedere autorizzazioni specifiche per le risorse descritte nella configurazione che stai implementando.
Concedi le autorizzazioni per poter creare la rete VPC, ovvero la risorsa definita nella configurazione di Terraform:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
--role=roles/compute.networkAdmin
Sostituisci quanto segue:
- SERVICE_ACCOUNT_NAME: il nome dell'account di servizio.
- PROJECT_ID: il tuo ID progetto.
Esegui il deployment delle risorse utilizzando l'interfaccia a riga di comando Terraform
Crea una rete VPC utilizzando la seguente configurazione Terraform. Per farlo, esegui il seguente 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
Esegui il deployment della configurazione utilizzando l'interfaccia a riga di comando Terraform con il seguente comando:
terraform init echo "************** TERRAFORM APPLY ******************" terraform apply -var="project_id=PROJECT_ID" -auto-approve cd ..
Quando il VPC viene eseguito il provisioning, viene visualizzato un output che inizia con il testo Creation complete
.
La VPC definita nella configurazione di Terraform è stata ora eseguita su Google Cloud. Terraform crea un file di stato, che si trova nel file system accanto al file main.tf
.
Creare un deployment segnaposto in Infrastructure Manager
Per importare le risorse in Infra Manager, devi disporre di un deployment esistente in Infra Manager.
Questo tutorial utilizza un bucket di archiviazione per archiviare la configurazione di Terraform. Se utilizzi questo tutorial per capire come importare altri implementamenti in Infra Manager, puoi memorizzare la configurazione Terraform in un bucket di archiviazione, in un repository Git pubblico o sulla tua macchina locale.
Aggiungi una configurazione Terraform vuota al bucket di archiviazione:
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 ..
Crea un deployment utilizzando 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
Al termine del deployment, viene visualizzato quanto segue:
Creating the deployment...done
Ora hai un deployment di Infra Manager. Successivamente, devi aggiungere il file di stato e la configurazione Terraform a questo deployment in modo che gestisca la VPC.
Importa il file dello stato e la configurazione Terraform
Per gestire la risorsa di cui è stato eseguito il deployment (la VPC) utilizzando Infra Manager, devi aggiungere il file di stato e la configurazione Terraform a Infra Manager.
Bloccare il deployment
Blocca il deployment di Infra Manager per poter apportare modifiche allo stato.
LOCK_ID=$(gcloud infra-manager deployments lock projects/PROJECT_ID/locations/us-central1/deployments/import-deployment --format="get(lockId)")
Importa il file di stato Terraform in Infra Manager
Importa il file dello stato per le risorse di cui è stato eseguito il deployment. Questo file di stato è stato creato da Terraform quando hai eseguito il deployment della VPC utilizzando l'interfaccia a riga di comando Terraform.
Carica il file di stato Terraform nel deployment di 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
Carica la configurazione Terraform nel bucket Cloud Storage
Ora che hai caricato il file dello stato di Terraform, devi caricare anche la configurazione Terraform utilizzata per creare la rete VPC. Infra Manager ha bisogno del file di stato di Terraform in modo che, quando viene eseguita un'anteprima di Infra Manager, non vengano rilevate modifiche alle risorse.
Carica la configurazione Terraform su Cloud Storage utilizzando il seguente comando:
gcloud storage cp main.tf gs://import-deployment-configuration
Sbloccare il deployment
Se utilizzi questo tutorial per capire come importare eventuali risorse in Infra Manager, assicurati che il file di stato e la configurazione di Terraform non presentino differenze. Se esistono differenze tra il file di stato e la configurazione Terraform, assicurati che il file di stato descriva le risorse che vuoi implementare. Quando sblocchi il deployment, se ci sono differenze tra il file di stato e la configurazione di Terraform, Infra Manager crea o elimina le risorse in modo che corrispondano al file di stato.
Devi sbloccare il deployment per poter gestire le risorse utilizzando Infra Manager. In questo tutorial, il file dello stato e la configurazione Terraform descrivono la stessa configurazione, pertanto Infra Manager non crea né elimina risorse.
Per rilasciare il blocco dal deployment, esegui il seguente comando.
gcloud infra-manager deployments unlock projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \
--project PROJECT_ID \
--location us-central1 \
--lock-id ${LOCK_ID}
Ora che il file di stato e la configurazione di Terraform sono stati aggiunti al deployment di Infra Manager, hai completato l'importazione delle risorse di cui è stato eseguito il deployment. La VPC di cui è stato eseguito il deployment è ora gestita da Infra Manager.
Visualizzare l'anteprima delle modifiche alle risorse
Esegui un'anteprima del deployment per verificare che lo stato di Terraform e le risorse di cui è stato eseguito il deployment siano sincronizzati. Google Cloud
Crea un'anteprima utilizzando il seguente 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
Visualizza i dettagli dell'anteprima per assicurarti che sia stata completata correttamente.
gcloud infra-manager previews describe projects/PROJECT_ID/locations/us-central1/previews/import-deployment-preview
Esporta l'anteprima per esaminare le modifiche.
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
Assicurati che la configurazione sia presente localmente e inizializzata con il seguente comando:
terraform init
Esegui Terraform show per esaminare le modifiche tra lo stato di deployment di Infrastructure Manager e la configurazione.
terraform show tfplan.out
Se la risorsa VPC su Google Cloud e il file di stato sono in
sincronizzazione, terraform show
stampa quanto segue per convalidare che
Infrastructure Manager non rileva alcuna modifica tra lo stato del deployment e la
configurazione. Viene visualizzato un output simile al seguente:
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.
Ora hai importato le risorse di cui è stato eseguito il deployment in modo che vengano gestite da Infra Manager. Ad esempio, ora puoi utilizzare Infra Manager per aggiornare il deployment.
Puoi anche aggiornare il deployment per verificare che sia stato importato correttamente in Infra Manager.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Elimina singole risorse
Elimina la VPC e i metadati relativi al deployment:
gcloud infra-manager deployments delete projects/PROJECT_ID/locations/us-central1/deployments/quickstart-deployment