Importar o Terraform atual

O Application Design Center permite importar as configurações doGoogle Cloud Terraform de vários produtos para um modelo de aplicativo sem precisar reestruturar o código em módulos de componentes individuais ou publicá-lo em um catálogo primeiro.

Ao contrário dos módulos do Terraform de produto único que você importa como componentes do catálogo e conecta na tela de design, uma configuração do Terraform de vários produtos é um módulo raiz que provisiona recursos em vários produtos do Google Cloud . Para importar módulos de produto único como componentes, consulte Importar componentes.

Importar as configurações atuais do Terraform para o App Design Center ajuda você a:

  • Traga as configurações atuais do Terraform para o gerenciamento do ciclo de vida de aplicativos do App Design Center e registre automaticamente os recursos implantados no App Hub.
  • Crie versões das configurações do Terraform criando revisões imutáveis de modelos de aplicativos.
  • Visualize e implante aplicativos usando o Infrastructure Manager ou exporte os arquivos do Terraform para o Cloud Storage.

Depois de criar uma revisão de modelo, é possível usá-la de uma das seguintes maneiras:

  • Implantar diretamente: crie um aplicativo com base na revisão, visualize-o para receber um relatório de avaliação e implante-o. Não é necessário publicar o modelo em um catálogo, compartilhá-lo ou encontrar um modelo compartilhado primeiro.
  • Reutilizar pelo catálogo: publique a revisão no catálogo, adicione-a como um componente a um modelo de aplicativo composto e exporte o Terraform do modelo composto. Para mais informações, consulte Publicar um modelo de aplicativo em um catálogo.

Antes de começar

Para realizar as tarefas neste documento, peça ao administrador para conceder a você os papéis necessários na pasta habilitada para apps ou no projeto de gerenciamento, conforme listado na tabela a seguir:

Tarefa Funções exigidas
Criar, importar, criar snapshots e exportar modelos de aplicativos e revisões de modelos Administrador do Application Design Center (roles/designcenter.admin) ou
Usuário do Application Design Center (roles/designcenter.user)
Criar, implantar e exportar aplicativos Administrador de aplicativos (roles/designcenter.applicationAdmin) ou
Editor de aplicativos (roles/designcenter.applicationEditor)

Para mais informações sobre papéis, consulte Controle de acesso com o Identity and Access Management.

Armazene o módulo raiz do Terraform (arquivos .tf e todos os arquivos de suporte, como .json) em uma das seguintes origens:

  • Um bucket do Cloud Storage.
  • Um repositório do Developer Connect.
  • Um repositório Git público.
  • Um arquivo YAML ou JSON local que contém os arquivos.

Importar o Terraform para um modelo de aplicativo

Siga as etapas abaixo usando a Google Cloud CLI para criar um modelo de aplicativo, importar sua configuração atual do Terraform e criar uma revisão de modelo imutável.

  1. Crie um modelo de aplicativo no seu espaço.

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

    Substitua:

    • APPLICATION_TEMPLATE: o ID do modelo de aplicativo que você quer criar.
    • PROJECT: o ID do projeto de gerenciamento.
    • LOCATION: o ID do local.
    • SPACE: o ID do espaço.
    • DISPLAY_NAME: um nome de exibição para o modelo de aplicativo.

    Para mais informações, consulte gcloud design-center spaces application-templates create.

  2. Importe a configuração do Terraform para o modelo de aplicativo de uma das seguintes fontes:

    • Para importar de um bucket do Cloud Storage, execute o seguinte 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
      
    • Para importar de um repositório do Developer Connect, execute o seguinte 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
      
    • Para importar de um repositório público do Git, execute o seguinte 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
      
    • Para importar de um arquivo YAML ou JSON local que contém um payload IaCModule, execute o seguinte 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
      

    Substitua:

    • APPLICATION_TEMPLATE: o ID do modelo de aplicativo.
    • PROJECT: o ID do projeto de gerenciamento.
    • LOCATION: o ID do local.
    • SPACE: o ID do espaço.
    • GCS_URI: o URI do Cloud Storage que contém seus arquivos do Terraform, no formato gs://BUCKET_NAME/FOLDER_PATH.
    • DEVELOPER_CONNECT_REPO_URI: o URI do link do repositório do Developer Connect, no formato projects/PROJECT/locations/LOCATION/connections/CONNECTION/gitRepositoryLinks/REPO_LINK.
    • DEVELOPER_CONNECT_BRANCH: o nome da ramificação no repositório do Developer Connect. Como alternativa, especifique --developer-connect-ref-tag ou --developer-connect-commit-sha.
    • DEVELOPER_CONNECT_DIR: o caminho do diretório no repositório do Developer Connect.
    • GIT_SOURCE_REPO: o URL HTTPS do repositório público do Git.
    • GIT_SOURCE_REF_TAG: a referência ou tag do Git no repositório público do Git.
    • GIT_SOURCE_DIR: o caminho do diretório no repositório público do Git.
    • IAC_MODULE_FILE: o caminho para um arquivo YAML ou JSON local que contém os arquivos do Terraform.
  3. Crie um snapshot do modelo de aplicativo para gerar uma revisão imutável que pode ser usada para criar e implantar aplicativos.

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

    Substitua:

    • APPLICATION_TEMPLATE: o ID do modelo de aplicativo.
    • PROJECT: o ID do projeto de gerenciamento.
    • LOCATION: o ID do local.
    • SPACE: o ID do espaço.

    A saída inclui o URI da revisão do modelo de aplicativo criado no formato projects/PROJECT/locations/LOCATION/spaces/SPACE/applicationTemplates/APPLICATION_TEMPLATE/revisions/REVISION.

Criar e implantar um aplicativo com base no modelo

Depois de criar uma revisão de snapshot do modelo importado do Terraform, é possível criar um rascunho do aplicativo, fornecer valores de variáveis de entrada e implantar o aplicativo.

  1. Crie um rascunho de aplicativo com base na revisão do modelo de aplicativo.

    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
    

    Substitua:

    • APPLICATION: o ID do aplicativo que você quer criar.
    • PROJECT: o ID do projeto de gerenciamento.
    • LOCATION: o ID do local.
    • SPACE: o ID do espaço.
    • SOURCE_APPLICATION_TEMPLATE_REVISION: o URI de revisão do modelo de aplicativo retornado pelo comando snapshot.
    • DEPLOYMENT_PROJECT: o ID do projeto de destino em que os recursos do Terraform são implantados.
    • DEPLOYMENT_REGION: a região de destino em que os recursos do Terraform são implantados.
    • APP_PARAMETERS: opcional. Pares de chave-valor de variáveis de entrada para o módulo raiz do Terraform (por exemplo, key=KEY,value=VALUE) ou o caminho para um arquivo YAML ou JSON que contém os parâmetros do aplicativo.
    • SCOPE_TYPE: o escopo do aplicativo, que pode ser regional ou global.

    Para mais informações sobre como gerenciar aplicativos, consulte Gerenciar aplicativos.

  2. Visualizar e implantar o aplicativo. Para instruções detalhadas, consulte Implantar aplicativos.

Exportar código do Terraform para o Cloud Storage

É possível exportar os arquivos do Terraform de um modelo de aplicativo, uma revisão de modelo de aplicativo ou um aplicativo para um bucket do Cloud Storage. Exporte quando quiser executar o Terraform com suas próprias ferramentas de CI/CD ou manter uma cópia no controle de versões.

  • Para exportar arquivos do Terraform de um rascunho de modelo de aplicativo, execute o seguinte comando:

    gcloud design-center spaces application-templates export APPLICATION_TEMPLATE \
        --project=PROJECT \
        --location=LOCATION \
        --space=SPACE \
        --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URI
    
  • Para exportar arquivos do Terraform de uma revisão de modelo de aplicativo, execute o seguinte 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
    
  • Para exportar arquivos do Terraform de um aplicativo (incluindo zz_adc_inputs.auto.tfvars.json preenchido com os parâmetros do aplicativo configurados), execute o seguinte comando:

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

Substitua:

  • APPLICATION_TEMPLATE: o ID do modelo de aplicativo.
  • REVISION: o ID da revisão do modelo de aplicativo.
  • APPLICATION: o ID do aplicativo.
  • PROJECT: o ID do projeto de gerenciamento.
  • LOCATION: o ID do local.
  • SPACE: o ID do espaço.
  • ARTIFACT_LOCATION_GCS_URI: o URI de destino do Cloud Storage no formato gs://BUCKET_NAME/EXPORT_FOLDER.

A seguir