Importa Terraform existente

Application Design Center te permite importar tus configuraciones de Terraform deGoogle Cloud multiproducto existentes a una plantilla de aplicación tal como están, sin reestructurar tu código en módulos de componentes individuales ni publicarlo primero en un catálogo.

A diferencia de los módulos de Terraform de un solo producto que importas como componentes del catálogo y conectas en el lienzo de diseño, una configuración de Terraform de varios productos es un módulo raíz que aprovisiona recursos en varios productos de Google Cloud . Para importar módulos de un solo producto como componentes, consulta Importa componentes.

Importar configuraciones de Terraform existentes a App Design Center te ayuda a hacer lo siguiente:

  • Incluye las configuraciones de Terraform existentes en la administración del ciclo de vida de las aplicaciones del App Design Center y registra automáticamente los recursos implementados en App Hub.
  • Crea versiones de tus parámetros de configuración de Terraform con revisiones inmutables de las plantillas de aplicación.
  • Obtén una vista previa de las aplicaciones y, luego, impleméntalas con Infrastructure Manager, o exporta los archivos de Terraform a Cloud Storage.

Después de crear una revisión de plantilla, puedes usarla de las siguientes maneras:

  • Implementar directamente: Crea una aplicación a partir de la revisión, obtén una vista previa para obtener un informe de evaluación y, luego, impleméntala. No es necesario que publiques la plantilla en un catálogo, la compartas ni busques una plantilla compartida primero.
  • Reutiliza a través de tu catálogo: Publica la revisión en tu catálogo, agrégala como un componente a una plantilla de aplicación compuesta y exporta el Terraform de la plantilla compuesta. Para obtener más información, consulta Publica una plantilla de aplicación en un catálogo.

Antes de comenzar

Para realizar las tareas de este documento, pídele a tu administrador que te otorgue los roles necesarios en la carpeta habilitada para apps o el proyecto de administración, como se indica en la siguiente tabla:

Tarea Roles obligatorios
Crear, importar, exportar y crear instantáneas de plantillas de aplicaciones y revisiones de plantillas Administrador de App Design Center (roles/designcenter.admin) o
Usuario de App Design Center (roles/designcenter.user)
Crea, implementa y exporta aplicaciones Administrador de aplicaciones (roles/designcenter.applicationAdmin) o
Editor de aplicaciones (roles/designcenter.applicationEditor)

Para obtener más información sobre los roles, consulta Control de acceso con Identity and Access Management.

Almacena tu módulo raíz de Terraform (archivos .tf y cualquier archivo de respaldo, como archivos .json) en una de las siguientes fuentes:

  • Un bucket de Cloud Storage
  • Un repositorio de Developer Connect.
  • Un repositorio de Git público.
  • Un archivo YAML o JSON local que contiene los archivos.

Importa Terraform a una plantilla de aplicación

Completa los siguientes pasos con Google Cloud CLI para crear una plantilla de aplicación, importar tu configuración de Terraform existente y crear una revisión de plantilla inmutable.

  1. Crea una plantilla de aplicación en tu espacio.

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

    Reemplaza lo siguiente:

    • APPLICATION_TEMPLATE: Es el ID de la plantilla de aplicación que deseas crear.
    • PROJECT: Es el ID de tu proyecto de administración.
    • LOCATION: Es el ID de tu ubicación.
    • SPACE: Es el ID de tu espacio.
    • DISPLAY_NAME: Es un nombre visible para la plantilla de la aplicación.

    Para obtener más información, consulta gcloud design-center spaces application-templates create.

  2. Importa tu configuración de Terraform a la plantilla de la aplicación desde una de las siguientes fuentes:

    • Para importar desde un bucket de Cloud Storage, ejecuta el siguiente 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 desde un repositorio de Developer Connect, ejecuta el siguiente 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 desde un repositorio de Git público, ejecuta el siguiente 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 desde un archivo YAML o JSON local que contenga una carga útil de IaCModule, ejecuta el siguiente 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
      

    Reemplaza lo siguiente:

    • APPLICATION_TEMPLATE: Es el ID de la plantilla de aplicación.
    • PROJECT: Es el ID de tu proyecto de administración.
    • LOCATION: Es el ID de tu ubicación.
    • SPACE: Es el ID de tu espacio.
    • GCS_URI: Es el URI de Cloud Storage que contiene tus archivos de Terraform, en el formato gs://BUCKET_NAME/FOLDER_PATH.
    • DEVELOPER_CONNECT_REPO_URI: Es el URI del vínculo del repositorio de Developer Connect, con el formato projects/PROJECT/locations/LOCATION/connections/CONNECTION/gitRepositoryLinks/REPO_LINK.
    • DEVELOPER_CONNECT_BRANCH: Es el nombre de la rama en tu repositorio de Developer Connect. Como alternativa, especifica --developer-connect-ref-tag o --developer-connect-commit-sha.
    • DEVELOPER_CONNECT_DIR: Es la ruta de acceso al directorio en tu repositorio de Developer Connect.
    • GIT_SOURCE_REPO: Es la URL HTTPS del repositorio público de Git.
    • GIT_SOURCE_REF_TAG: Es la referencia o etiqueta de Git en el repositorio público de Git.
    • GIT_SOURCE_DIR: Es la ruta de acceso al directorio en el repositorio público de Git.
    • IAC_MODULE_FILE: Es la ruta de acceso a un archivo YAML o JSON local que contiene tus archivos de Terraform.
  3. Crea una instantánea de la plantilla de aplicación para generar una revisión inmutable de la plantilla de aplicación que puedas usar para crear e implementar aplicaciones.

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

    Reemplaza lo siguiente:

    • APPLICATION_TEMPLATE: Es el ID de la plantilla de aplicación.
    • PROJECT: Es el ID de tu proyecto de administración.
    • LOCATION: Es el ID de tu ubicación.
    • SPACE: Es el ID de tu espacio.

    El resultado incluye el URI de revisión de la plantilla de aplicación creada en el formato projects/PROJECT/locations/LOCATION/spaces/SPACE/applicationTemplates/APPLICATION_TEMPLATE/revisions/REVISION.

Crea e implementa una aplicación a partir de la plantilla

Después de crear una revisión de instantánea de tu plantilla de Terraform importada, puedes crear un borrador de aplicación, proporcionar valores de variables de entrada y, luego, implementar la aplicación.

  1. Crea un borrador de aplicación a partir de la revisión de la plantilla de aplicación.

    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
    

    Reemplaza lo siguiente:

    • APPLICATION: Es el ID de la aplicación que deseas crear.
    • PROJECT: Es el ID de tu proyecto de administración.
    • LOCATION: Es el ID de tu ubicación.
    • SPACE: Es el ID de tu espacio.
    • SOURCE_APPLICATION_TEMPLATE_REVISION: Es el URI de revisión de la plantilla de aplicación que muestra el comando snapshot.
    • DEPLOYMENT_PROJECT: Es el ID del proyecto de destino en el que se implementan tus recursos de Terraform.
    • DEPLOYMENT_REGION: Es la región de destino en la que se implementan tus recursos de Terraform.
    • APP_PARAMETERS: Opcional Ingresa pares clave-valor de variables para tu módulo raíz de Terraform (por ejemplo, key=KEY,value=VALUE) o la ruta de acceso a un archivo YAML o JSON que contenga los parámetros de tu aplicación.
    • SCOPE_TYPE: Es el permiso de tu aplicación, ya sea regional o global.

    Para obtener más información sobre cómo administrar aplicaciones, consulta Administra aplicaciones.

  2. Obtener una vista previa de tu aplicación y, luego, implementarla Para obtener instrucciones paso a paso, consulta Implementa aplicaciones.

Exporta el código de Terraform a Cloud Storage

Puedes exportar los archivos de Terraform desde una plantilla de aplicación, una revisión de plantilla de aplicación o una aplicación a un bucket de Cloud Storage. Exporta cuando quieras ejecutar Terraform con tus propias herramientas de CI/CD o mantener una copia en el control de versión.

  • Para exportar archivos de Terraform desde un borrador de plantilla de aplicación, ejecuta el siguiente 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 archivos de Terraform desde una revisión de plantilla de aplicación, ejecuta el siguiente 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 archivos de Terraform desde una aplicación (incluido zz_adc_inputs.auto.tfvars.json propagado con los parámetros de la aplicación configurados), ejecuta el siguiente comando:

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

Reemplaza lo siguiente:

  • APPLICATION_TEMPLATE: Es el ID de la plantilla de aplicación.
  • REVISION: Es el ID de revisión de la plantilla de aplicación.
  • APPLICATION: Es el ID de aplicación.
  • PROJECT: Es el ID de tu proyecto de administración.
  • LOCATION: Es el ID de tu ubicación.
  • SPACE: Es el ID de tu espacio.
  • ARTIFACT_LOCATION_GCS_URI: Es el URI de Cloud Storage de destino en el formato gs://BUCKET_NAME/EXPORT_FOLDER.

¿Qué sigue?