Importa Terraform esistente

Application Design Center ti consente di importare le configurazioni TerraformGoogle Cloud multiprodotto esistenti in un template dell'applicazione così come sono, senza ristrutturare il codice in singoli moduli di componenti o pubblicarlo prima in un catalogo.

A differenza dei moduli Terraform per un singolo prodotto che importi come componenti del catalogo e colleghi nel canvas di progettazione, una configurazione Terraform per più prodotti è un modulo principale che esegue il provisioning delle risorse in diversi prodotti Google Cloud . Per importare moduli di un singolo prodotto come componenti, consulta Importa componenti.

L'importazione di configurazioni Terraform esistenti in App Design Center ti consente di:

  • Porta le configurazioni Terraform esistenti nella gestione del ciclo di vita delle applicazioni di App Design Center e registra automaticamente le risorse di cui è stato eseguito il deployment in App Hub.
  • Crea versioni delle configurazioni Terraform creando revisioni immutabili dei modelli di applicazione.
  • Visualizza l'anteprima ed esegui il deployment delle applicazioni utilizzando Infrastructure Manager o esporta i file Terraform in Cloud Storage.

Dopo aver creato una revisione del template, puoi utilizzarla in uno dei seguenti modi:

  • Esegui il deployment direttamente: crea un'applicazione dalla revisione, visualizzala in anteprima per ottenere un report di valutazione ed eseguine il deployment. Non è necessario pubblicare il modello in un catalogo, condividerlo o trovare un modello condiviso.
  • Riutilizza tramite il catalogo: pubblica la revisione nel catalogo, aggiungila come componente a un template di applicazione composito ed esporta il Terraform del template composito. Per saperne di più, consulta Pubblica un modello di applicazione in un catalogo.

Prima di iniziare

Per eseguire le attività descritte in questo documento, chiedi all'amministratore di concederti i ruoli necessari nella cartella app o nel progetto di gestione, come elencato nella tabella seguente:

Attività Ruoli obbligatori
Creare, importare, esportare e creare snapshot di template di applicazione e revisioni dei template Application Design Center Admin (roles/designcenter.admin) o
Application Design Center User (roles/designcenter.user)
Crea, esegui il deployment ed esporta le applicazioni Application Admin (roles/designcenter.applicationAdmin) o
Application Editor (roles/designcenter.applicationEditor)

Per saperne di più sui ruoli, consulta Controllo degli accessi con Identity and Access Management.

Archivia il modulo root Terraform (file .tf ed eventuali file di supporto, come i file .json) in una delle seguenti origini:

  • Un bucket Cloud Storage.
  • Un repository Developer Connect.
  • Un repository Git pubblico.
  • Un file YAML o JSON locale che contiene i file.

Importa Terraform in un template di applicazione

Completa i seguenti passaggi utilizzando Google Cloud CLI per creare un template dell'applicazione, importare la configurazione Terraform esistente e creare una revisione del template immutabile.

  1. Crea un template di applicazione nel tuo spazio.

    gcloud design-center spaces application-templates create APPLICATION_TEMPLATE \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE \
        --display-name=DISPLAY_NAME
    

    Sostituisci quanto segue:

    • APPLICATION_TEMPLATE: l'ID del template di applicazione che vuoi creare.
    • PROJECT: l'ID del tuo progetto di gestione.
    • LOCATION: ID località.
    • SPACE: l'ID dello spazio.
    • DISPLAY_NAME: un nome visualizzato per il template dell'applicazione.

    Per saperne di più, consulta gcloud design-center spaces application-templates create.

  2. Importa la configurazione Terraform nel template dell'applicazione da una delle seguenti origini:

    • Per importare da un bucket Cloud Storage, esegui questo comando:

      gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \
          --project=PROJECT \
          --location=LOCATION \
          --space=SPACE \
          --gcs-uri=GCS_URI \
          --raw-terraform-import-enabled
      
    • Per importare da un repository Developer Connect, esegui il seguente comando:

      gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \
          --project=PROJECT \
          --location=LOCATION \
          --space=SPACE \
          --developer-connect-repo-uri=DEVELOPER_CONNECT_REPO_URI \
          --developer-connect-branch=DEVELOPER_CONNECT_BRANCH \
          --developer-connect-dir=DEVELOPER_CONNECT_DIR \
          --raw-terraform-import-enabled
      
    • Per importare da un repository Git pubblico, esegui questo comando:

      gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \
          --project=PROJECT \
          --location=LOCATION \
          --space=SPACE \
          --git-source-repo=GIT_SOURCE_REPO \
          --git-source-ref-tag=GIT_SOURCE_REF_TAG \
          --git-source-dir=GIT_SOURCE_DIR \
          --raw-terraform-import-enabled
      
    • Per importare da un file YAML o JSON locale contenente un payload IaCModule, esegui questo comando:

      gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \
          --project=PROJECT \
          --location=LOCATION \
          --space=SPACE \
          --iac-module-from-file=IAC_MODULE_FILE \
          --raw-terraform-import-enabled
      

    Sostituisci quanto segue:

    • APPLICATION_TEMPLATE: l'ID del template dell'applicazione.
    • PROJECT: l'ID del tuo progetto di gestione.
    • LOCATION: ID località.
    • SPACE: l'ID dello spazio.
    • GCS_URI: l'URI Cloud Storage contenente i file Terraform, nel formato gs://BUCKET_NAME/FOLDER_PATH.
    • DEVELOPER_CONNECT_REPO_URI: l'URI del link al repository Developer Connect, nel formato projects/PROJECT/locations/LOCATION/connections/CONNECTION/gitRepositoryLinks/REPO_LINK.
    • DEVELOPER_CONNECT_BRANCH: il nome del branch nel repository Developer Connect. In alternativa, specifica --developer-connect-ref-tag o --developer-connect-commit-sha.
    • DEVELOPER_CONNECT_DIR: il percorso della directory nel repository Developer Connect.
    • GIT_SOURCE_REPO: l'URL HTTPS del repository Git pubblico.
    • GIT_SOURCE_REF_TAG: il riferimento o il tag Git nel repository Git pubblico.
    • GIT_SOURCE_DIR: il percorso della directory nel repository Git pubblico.
    • IAC_MODULE_FILE: il percorso di un file YAML o JSON locale contenente i file Terraform.
  3. Crea uno snapshot del template di applicazione per generare una revisione immutabile del template di applicazione che puoi utilizzare per creare applicazioni ed eseguirne il deployment.

    gcloud design-center spaces application-templates snapshot APPLICATION_TEMPLATE \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE
    

    Sostituisci quanto segue:

    • APPLICATION_TEMPLATE: l'ID del template dell'applicazione.
    • PROJECT: l'ID del tuo progetto di gestione.
    • LOCATION: ID località.
    • SPACE: l'ID dello spazio.

    L'output include l'URI della revisione del template di applicazione creata nel formato projects/PROJECT/locations/LOCATION/spaces/SPACE/applicationTemplates/APPLICATION_TEMPLATE/revisions/REVISION.

Crea ed esegui il deployment di un'applicazione dal template

Dopo aver creato una revisione snapshot del template Terraform importato, puoi creare una bozza dell'applicazione, fornire i valori delle variabili di input ed eseguire il deployment dell'applicazione.

  1. Crea una bozza di applicazione dalla revisione del template di applicazione.

    gcloud design-center spaces applications create APPLICATION \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE \
        --source-application-template-revision=SOURCE_APPLICATION_TEMPLATE_REVISION \
        --deployment-project=DEPLOYMENT_PROJECT \
        --deployment-region=DEPLOYMENT_REGION \
        --app-parameters=APP_PARAMETERS \
        --scope-type=SCOPE_TYPE
    

    Sostituisci quanto segue:

    • APPLICATION: l'ID dell'applicazione che vuoi creare.
    • PROJECT: l'ID del tuo progetto di gestione.
    • LOCATION: l'ID località.
    • SPACE: l'ID dello spazio.
    • SOURCE_APPLICATION_TEMPLATE_REVISION: l'URI della revisione del template di applicazione restituito dal comando snapshot.
    • DEPLOYMENT_PROJECT: l'ID progetto di destinazione in cui viene eseguito il deployment delle risorse Terraform.
    • DEPLOYMENT_REGION: la regione di destinazione in cui viene eseguito il deployment delle risorse Terraform.
    • APP_PARAMETERS: (Facoltativo) Coppie chiave-valore delle variabili di input per il modulo root Terraform (ad esempio, key=KEY,value=VALUE) o il percorso di un file YAML o JSON contenente i parametri dell'applicazione.
    • SCOPE_TYPE: l'ambito della tua applicazione, regional o global.

    Per saperne di più sulla gestione delle applicazioni, consulta Gestisci le applicazioni.

  2. Visualizzare l'anteprima ed eseguire il deployment dell'applicazione. Per istruzioni passo passo, consulta Esegui il deployment delle applicazioni.

Esporta il codice Terraform in Cloud Storage

Puoi esportare i file Terraform da un modello di applicazione, da una revisione di un modello di applicazione o da un'applicazione in un bucket Cloud Storage. Esporta quando vuoi eseguire Terraform con i tuoi strumenti CI/CD o conservare una copia nel controllo della versione.

  • Per esportare i file Terraform da una bozza di template di applicazione, esegui questo comando:

    gcloud design-center spaces application-templates export APPLICATION_TEMPLATE \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE \
        --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URI
    
  • Per esportare i file Terraform da una revisione del template di applicazione, esegui il seguente comando:

    gcloud design-center spaces application-templates revisions export REVISION \
        --application-template=APPLICATION_TEMPLATE \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE \
        --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URI
    
  • Per esportare i file Terraform da un'applicazione (incluso zz_adc_inputs.auto.tfvars.json compilato con i parametri dell'applicazione configurati), esegui questo comando:

    gcloud design-center spaces applications export APPLICATION \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE \
        --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URI
    

Sostituisci quanto segue:

  • APPLICATION_TEMPLATE: l'ID del template dell'applicazione.
  • REVISION: l'ID revisione del template di applicazione.
  • APPLICATION: l'ID applicazione.
  • PROJECT: l'ID del tuo progetto di gestione.
  • LOCATION: ID località.
  • SPACE: l'ID dello spazio.
  • ARTIFACT_LOCATION_GCS_URI: l'URI Cloud Storage di destinazione nel formato gs://BUCKET_NAME/EXPORT_FOLDER.

Passaggi successivi