Questo tutorial mostra come importare Google Cloud le risorse in un deployment di Infrastructure Manager. Puoi importare solo le risorse di cui è stato eseguito il provisioning utilizzando Terraform.
Se hai una configurazione Terraform e non l'hai ancora eseguita il deployment 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 Terraform CLI. Poi, questo tutorial mostra come importare queste risorse di cui è stato eseguito il deployment in Infrastructure Manager in modo che le risorse 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 il provisioning delle risorse deve rispettare i 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
-
Accedi al tuo Account Google.
Se non ne hai già uno, registrati per creare un nuovo account.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico: puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'resourcemanager.projects.createautorizzazione. Scopri come concedere i ruoli.
-
Crea un Google Cloud progetto:
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il Google Cloud progetto che stai creando. -
Seleziona il Google Cloud progetto che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del Google Cloud progetto.
-
Verifica che la fatturazione sia attivata per il tuo Google Cloud progetto.
Abilita l'API Infrastructure Manager:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.gcloud services enable config.googleapis.com
-
Configura l'autenticazione:
-
Assicurati di disporre del ruolo IAM Creazione account di servizio
(
roles/iam.serviceAccountCreator) e del ruolo Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin). Scopri come concedere i ruoli. -
Crea l'account di servizio:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Sostituisci
SERVICE_ACCOUNT_NAMEcon un nome per l'account di servizio. -
Concedi il ruolo IAM all'account di servizio:
roles/config.agentgcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent
Sostituisci quanto segue:
SERVICE_ACCOUNT_NAME: il nome del account di servizioPROJECT_ID: l'ID progetto in cui hai creato il account di servizio
-
Assicurati di disporre del ruolo IAM Creazione account di servizio
(
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico: puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'resourcemanager.projects.createautorizzazione. Scopri come concedere i ruoli.
-
Crea un Google Cloud progetto:
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il Google Cloud progetto che stai creando. -
Seleziona il Google Cloud progetto che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del Google Cloud progetto.
-
Verifica che la fatturazione sia attivata per il tuo Google Cloud progetto.
Abilita l'API Infrastructure Manager:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.gcloud services enable config.googleapis.com
-
Configura l'autenticazione:
-
Assicurati di disporre del ruolo IAM Creazione account di servizio
(
roles/iam.serviceAccountCreator) e del ruolo Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin). Scopri come concedere i ruoli. -
Crea l'account di servizio:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Sostituisci
SERVICE_ACCOUNT_NAMEcon un nome per l'account di servizio. -
Concedi il ruolo IAM all'account di servizio:
roles/config.agentgcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent
Sostituisci quanto segue:
SERVICE_ACCOUNT_NAME: il nome del account di servizioPROJECT_ID: l'ID progetto in cui hai creato il account di servizio
-
Assicurati di disporre del ruolo IAM Creazione account di servizio
(
- Installa una versione supportata di Terraform.
Esegui il deployment delle risorse su Google Cloud
La Google Cloud risorsa di cui esegui il deployment in questo tutorial è un VPC. Questa sezione mostra come eseguire il deployment della risorsa da utilizzare come esempio per importare le 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 è in esecuzione Infra Manager. Per l'elenco delle località valide, consulta
Località di Infrastructure Manager.
Concedi le autorizzazioni per le risorse nella configurazione
Hai concesso le autorizzazioni necessarie per eseguire Infra Manager, ma devi anche concedere le autorizzazioni specifiche per le risorse descritte nella configurazione di cui stai eseguendo il deployment.
Concedi le autorizzazioni per poter creare la rete VPC, che è la risorsa definita nella configurazione 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 del account di servizio.
- PROJECT_ID: il tuo ID progetto.
Esegui il deployment delle risorse utilizzando Terraform CLI
Crea una rete VPC utilizzando la seguente configurazione Terraform. Per farlo, esegui il comando seguente:
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 } EOFEsegui il deployment della configurazione utilizzando Terraform CLI con il seguente comando:
terraform init echo "************** TERRAFORM APPLY ******************" terraform apply -var="project_id=PROJECT_ID" -auto-approve cd ..
Quando viene eseguito il provisioning del VPC, viene visualizzato un output che inizia con il testo Creation complete.
Il VPC definito nella configurazione Terraform è ora
di cui è stato eseguito il deployment su Google Cloud. Terraform crea un file di stato, che si trova nel file system accanto al file main.tf.
Crea un deployment segnaposto in Infrastructure Manager
Per importare le risorse in Infra Manager, devi avere un deployment esistente in Infra Manager.
Questo tutorial utilizza un bucket di archiviazione per archiviare la configurazione Terraform. Se utilizzi questo tutorial per capire come importare altri deployment in Infra Manager, puoi archiviare 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_ACCOUNTAl termine del deployment, vedrai:
Creating the deployment...done
Ora hai un deployment di Infra Manager. Poi, devi aggiungere il file di stato e la configurazione Terraform a questo deployment in modo che questo deployment gestisca il VPC.
Importa il file di stato e la configurazione Terraform
Per gestire la risorsa di cui è stato eseguito il deployment (il VPC) utilizzando Infra Manager, devi aggiungere il file di stato e la configurazione Terraform a Infra Manager.
Blocca il deployment
Blocca il deployment di Infra Manager in modo da poter apportare modifiche al suo 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 di stato per le risorse di cui è stato eseguito il deployment. Questo file di stato è stato creato da Terraform quando hai eseguito il deployment del VPC utilizzando Terraform CLI.
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 di stato Terraform, devi anche caricare la configurazione Terraform che hai utilizzato per creare la rete VPC. Infra Manager ha bisogno del file di stato Terraform in modo che, quando viene eseguita un'anteprima di Infra Manager, non vengano rilevate modifiche alle risorse.
Carica la configurazione Terraform in Cloud Storage utilizzando il seguente comando:
gcloud storage cp main.tf gs://import-deployment-configuration
Sblocca il deployment
Se utilizzi questo tutorial per capire come importare le risorse in Infra Manager, assicurati che il file di stato e la configurazione Terraform non presentino differenze. Se ci sono differenze tra il file di stato e la configurazione Terraform, assicurati che il file di stato descriva le risorse di cui vuoi eseguire il deployment. Quando sblocchi il deployment, se ci sono differenze tra il file di stato e la configurazione 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 di stato e la configurazione Terraform descrivono la stessa configurazione, quindi Infra Manager non crea né elimina risorse.
Rilascia il blocco dal deployment eseguendo il comando seguente.
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 Terraform sono stati aggiunti al deployment di Infra Manager, hai completato l'importazione delle risorse di cui è stato eseguito il deployment. Il VPC di cui è stato eseguito il deployment è ora gestito da Infra Manager.
Visualizza 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 su Google Cloud siano sincronizzati.
Crea un'anteprima utilizzando il seguente 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-central1Ottieni 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_NAMEEsporta 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_NAME --format "get(result.binarySignedUri)") curl -X GET --output tfplan.out $SIGNED_BIN_PLAN_URLAssicurati che la configurazione sia presente localmente e inizializzata con il seguente comando:
terraform initEsegui Terraform show per esaminare le modifiche tra lo stato del deployment di Infrastructure Manager e la configurazione.
terraform show tfplan.out
Se la risorsa VPC su Google Cloud e il file di stato sono sincronizzati, terraform show restituisce l'output seguente, che convalida che Infrastructure Manager non vede modifiche 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 siano 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.
Libera spazio
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
Elimina un Google Cloud progetto:
gcloud projects delete PROJECT_ID
Elimina singole risorse
Elimina il VPC e i metadati relativi al deployment:
gcloud infra-manager deployments delete projects/PROJECT_ID/locations/us-central1/deployments/quickstart-deployment