Crea un almacén de datos con Terraform

Puedes usar Terraform para crear un almacén de datos genérico de Gemini Enterprise o para configurar conectores de datos para Atlassian Confluence, Atlassian Jira, BigQuery, Microsoft SharePoint o Salesforce.

Antes de comenzar

Antes de usar Terraform para crear un almacén de datos, haz lo siguiente:

  • Verifica si la facturación está habilitada en tu Google Cloud proyecto.

  • Asegúrate de tener el rol de Administrador de IAM de proyecto (roles/resourcemanager.projectIamAdmin) para tu Google Cloud proyecto, así como el rol de Administrador de Gemini Enterprise (roles/discoveryengine.agentspaceAdmin) role.

  • Opcional: Si conectas una fuente de datos de terceros, como Microsoft SharePoint, a Gemini Enterprise, obtén credenciales de acceso (como claves de API o autenticación de base de datos) para la fuente de datos.

  • Asegúrate de usar la versión 7.7.0 o posterior del proveedor de Terraform de hashicorp/google:

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "7.7.0"
        }
      }
    }
    

Crea un almacén de datos genérico

Para usar Terraform y crear un almacén de datos vacío, usa el google_discovery_engine_data_store recurso de Terraform.

  1. Crea la configuración de Terraform:

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "7.7.0"
        }
      }
    }
    
    provider "google" {
      project                 = "PROJECT_ID"
      user_project_override   = true
      billing_project         = "BILLING_PROJECT_ID"
    }
    
    resource "google_discovery_engine_data_store" "gemini_search_store" {
      location                    = "LOCATION"
      data_store_id               = "DATA_STORE_ID"
      display_name                = "DATA_STORE_NAME"
      industry_vertical           = "GENERIC"
      content_config              = "NO_CONTENT"
      solution_types              = ["SOLUTION_TYPE_SEARCH"]
      create_advanced_site_search = false
    }
    

    Reemplaza lo siguiente:

  2. Inicializa Terraform mediante este comando:

    terraform init -upgrade
    
  3. Obtén una vista previa de tu configuración:

    terraform plan
    
  4. Aplica la configuración:

    terraform apply
    

Después de crear el almacén de datos vacío, puedes ingerir datos en él con la Google Cloud consola o los comandos de la API.

Crea un conector de datos

Para usar Terraform y crear un conector de datos para un servicio compatible, usa el google_discovery_engine_data_connector recurso de Terraform. Incluye credenciales para el servicio, así como la configuración del filtro de búsqueda, en json_params.

  1. Crea la configuración de Terraform:

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "7.7.0"
        }
      }
    }
    
    provider "google" {
      project                 = "PROJECT_ID"
      user_project_override   = true
      billing_project         = "BILLING_PROJECT_ID"
    }
    
    resource "google_discovery_engine_data_connector" "LOCAL_NAME" {
      provider = google
    
      project                 = "PROJECT_ID"
      location                = "LOCATION"
      collection_id           = "COLLECTION_ID"
      collection_display_name = "COLLECTION_DISPLAY_NAME"
    
      data_source = "DATA_SOURCE"
    
      json_params = jsonencode({
        "client_id"                = "CLIENT_ID"
        "client_secret"            = "CLIENT_SECRET"
        "instance_uri"             = "INSTANCE_URI"
        "tenant_id"                = "TENANT_ID"
        "structured_search_filter" = { "FILTER_KEY" = ["FILTER_VALUE"] }
      })
    
      refresh_interval = "7200s"
    
      connector_modes = [CONNECTOR_MODES]
    
      entities {
        entity_name = "ENTITY_NAME"
      }
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu Google Cloud proyecto

    • BILLING_PROJECT_ID: el ID de tu Google Cloud proyecto de facturación

    • LOCAL_NAME: el nombre local del recurso de Terraform

    • LOCATION: la ubicación del almacén de datos, como us o global (para obtener más información, consulta Compromisos de residencia de datos y procesamiento regional de AA de las ediciones Standard y Plus de Gemini Enterprise)

    • COLLECTION_ID: el ID de la colección

    • COLLECTION_DISPLAY_NAME: el nombre visible de la colección

    • DATA_SOURCE: el tipo de fuente de datos. Se admiten los siguientes valores:

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • CLIENT_ID: el ID de cliente del servicio

    • CLIENT_SECRET: el secreto del cliente del servicio

    • INSTANCE_URI: el URI de tu instancia (por ejemplo, https://your-tenant.sharepoint.com)

    • TENANT_ID: el ID del arrendatario

    • FILTER_KEY: una clave de filtro (por ejemplo, Path)

    • FILTER_VALUE: un valor de filtro (por ejemplo, "https://example.sharepoint.com/*")

    • ENTITY_NAME: el nombre de una entidad para que el conector busque (consulta la documentación del recurso)

    • CONNECTOR_MODES: los modos que se habilitarán para el conector (por ejemplo, "FEDERATED")

  2. Inicializa Terraform mediante este comando:

    terraform init -upgrade
    
  3. Obtén una vista previa de tu configuración:

    terraform plan
    
  4. Aplica la configuración:

    terraform apply
    

    Cuando se te solicite, confirma los cambios.

Después de aplicar la configuración, puedes ver el conector de datos en la lista de almacenes de datos y conectarlo a una app de Gemini Enterprise. Para obtener más información, consulta Conecta un almacén de datos a la app y autoriza Gemini Enterprise.

Actualiza un conector de datos

Para usar Terraform y actualizar la configuración de un conector de datos existente, proporciona la configuración nueva en json_params y proporciona los argumentos sin cambios con sus valores actuales para que Terraform no reemplace el recurso. Agrega los argumentos obligatorios que no necesiten actualizarse a ignore_changes en el bloque lifecycle.

  1. Crea la configuración de Terraform. En este ejemplo, se actualiza la configuración de structured_search_filter con un nuevo valor de filtro, pero se enumeran otros campos obligatorios, como refresh_interval, entities y connector_modes, con sus valores actuales.

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "7.7.0"
        }
      }
    }
    
    provider "google" {
      project               = "PROJECT_ID"
      user_project_override = true
      billing_project       = "BILLING_PROJECT_ID"
    }
    
    resource "google_discovery_engine_data_connector" "LOCAL_NAME" {
      provider = google
    
      project                 = "PROJECT_ID"
      location                = "LOCATION"
      collection_id           = "COLLECTION_ID"
      collection_display_name = "COLLECTION_DISPLAY_NAME"
    
      data_source = "DATA_SOURCE"
    
      json_params = jsonencode({
        "structured_search_filter" = { "FILTER_KEY" = ["UPDATED_FILTER_VALUE"] }
      })
      refresh_interval = "REFRESH_INTERVAL"
    
      entities {
        entity_name           = "ENTITY_NAME"
        key_property_mappings = {}
      }
      static_ip_enabled = false
      connector_modes   = [CONNECTOR_MODES]
    
      lifecycle {
        ignore_changes = [
          collection_display_name,
          entities,
          refresh_interval
        ]
      }
    }
    

    Reemplaza lo siguiente:

  2. Ejecuta terraform import para indicar que se trata de una operación de actualización:

    terraform import \
    google_discovery_engine_data_connector.LOCAL_NAME \
    projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataConnector
    
  3. Obtén una vista previa de tu configuración:

    terraform plan
    

    El resultado debería ser similar al siguiente ejemplo:

    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
      ~ update in-place
    
    Terraform will perform the following actions:
    
      google_discovery_engine_data_connector.update-sharepoint-connector will be updated in-place
      ~ resource "google_discovery_engine_data_connector" "update-sharepoint-connector" {
            id                              = "projects/my-project-123/locations/global/collections/default_collection/dataConnector"
          ~ json_params                     = jsonencode(
              ~ {
                  ~ structured_search_filter = {
                      ~ "Path" = [
                          ~ "https://other.sharepoint.com/*" - "https://example.sharepoint.com/*",
                            (1 unchanged element hidden)
                        ]
                    }
                }
            )
            name                            = "projects/my-project-123/locations/global/collections/default_collection/dataConnector"
            (21 unchanged attributes hidden)
    
            (2 unchanged blocks hidden)
        }
    
    Plan: 0 to add, 1 to change, 0 to destroy.
    

    Asegúrate de que la línea final del resultado especifique 0 to add, 1 to change, 0 to destroy.

  4. Aplica la configuración:

    terraform apply
    

    Cuando se te solicite, confirma los cambios.

    El resultado debería ser similar al siguiente ejemplo:

    Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
    

¿Qué sigue?