Esporta le tue risorse Google Cloud in formato Terraform

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Hai eseguito il deployment delle risorse in Google Cloud e ora devi gestire la tua infrastruttura come codice (IaC) con Terraform. Google offre uno strumento che puoi utilizzare per generare codice Terraform per le risorse in un progetto, una cartella o un'organizzazione.

Prima di iniziare

  • Installa l'interfaccia a riga di comando (CLI) per Config Connector.

    gcloud components install config-connector
    

    Config Connector permette di utilizzare lo strumento di esportazione collettiva Terraform di Google Cloud.

  • Attiva l'API Cloud Asset.

    gcloud services enable cloudasset.googleapis.com
    
  • Assicurati che l'agente del servizio Cloud Asset gcp-sa-cloudasset.iam.gserviceaccount.com gcp-sa-cloudasset.iam.gserviceaccount.com abbia il ruolo roles/servicenetworking.serviceAgent.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudasset.iam.gserviceaccount.com \
      --role=roles/servicenetworking.serviceAgent
    

Esporta l'intera configurazione del progetto nel codice Terraform HCL

Il comando gcloud beta resource-config bulk-export --resource-format=terraform esporta le risorse attualmente configurate nel progetto, nella cartella o nell'organizzazione e le stampa sullo schermo nel formato di codice HCL.

gcloud beta resource-config bulk-export \
  --project=PROJECT_ID \
  --resource-format=terraform

Scrivere l'output in una struttura di directory

Output dell'intera configurazione del progetto in un percorso:

gcloud beta resource-config bulk-export \
  --path=OUTPUT_DIRECTORY_NAME \
  --project=PROJECT_ID \
  --resource-format=terraform

Il flag --path specifica la posizione in cui vuoi restituire il codice HCL. Se il percorso OUTPUT_DIRECTORY_NAME non esiste, un messaggio ti chiede se vuoi crearlo.

Dopo aver eseguito il comando, il codice HCL per ogni risorsa viene restituito in un file .tf separato nella seguente struttura di directory:

OUTPUT_DIRECTORY_NAME/projects/PROJECT_ID/RESOURCE_TYPE

Scrivere l'output in un unico file

Se non vuoi stampare l'output sullo schermo o creare file .tf separati, puoi scrivere tutto l'output in un unico file, come mostrato in questo esempio:

gcloud beta resource-config bulk-export --resource-format=terraform >> gcp_resources.tf

Filtrare l'output

Filtra l'output del comando di esportazione collettiva specificando i tipi di risorse.

Elenca i tipi di risorse supportati per il filtro

Per un elenco dei tipi di risorse supportati, esegui il comando gcloud beta resource-config list-resource-types:

gcloud beta resource-config list-resource-types

In via facoltativa, scrivi l'output in un file:

gcloud beta resource-config list-resource-types >> strings.txt

Nell'output, il tipo di risorsa per le VM di Compute Engine è elencato come:

KRM KIND: ComputeInstance

Puoi ignorare il prefisso KRM KIND:.

Esportare un singolo tipo di risorsa

Utilizza una stringa, come ComputeInstance, per esportare tipi di risorse specifici per il tuo progetto in formato codice HCL:

gcloud beta resource-config bulk-export \
  --resource-types=RESOURCE_TYPE \
  --project=PROJECT_ID \
  --resource-format=terraform

Il flag --resource-types specifica il tipo di risorsa da visualizzare.

Esporta più tipi di risorse

Esporta istanze VM e regole firewall nel formato codice HCL:

gcloud beta resource-config bulk-export \
  --resource-types=ComputeFirewall,ComputeInstance \
  --project=PROJECT_ID \
  --resource-format=terraform

Utilizza un file per specificare i tipi di risorsa da esportare

  1. Crea una directory denominata tf-output.

    cd && mkdir tf-output && cd tf-output
    
  2. Crea un file denominato types.txt e aggiungi un elenco di tipi di risorse. Ad esempio:

    ComputeBackendBucket
    ComputeBackendService
    ComputeForwardingRule
    
  3. Esegui il comando gcloud beta resource-config bulk-export con il flag --resource-types-file:

    gcloud beta resource-config bulk-export \
     --resource-types-file=types.txt \
     --path=tf-output \
     --project=PROJECT_ID \
     --resource-format=terraform
    

Se il progetto non contiene alcun tipo di risorsa, il comando ha esito positivo, ma non viene restituito alcun risultato per quel tipo di risorsa.

Passaggi successivi