Criar um repositório de dados usando o Terraform

É possível usar o Terraform para criar um repositório de dados genérico do Gemini Enterprise ou configurar conectores de dados para o Atlassian Confluence, Atlassian Jira, BigQuery, Microsoft SharePoint ou Salesforce.

Antes de começar

Antes de usar o Terraform para criar um repositório de dados, faça o seguinte:

  • Verifique se o faturamento está ativado para o Google Cloud projeto.

  • Verifique se você tem o papel de administrador de IAM do projeto (roles/resourcemanager.projectIamAdmin) para o Google Cloud projeto, bem como o papel de administrador do Gemini Enterprise (roles/discoveryengine.agentspaceAdmin) role.

  • Opcional: se você estiver conectando uma fonte de dados de terceiros, como o Microsoft SharePoint, ao Gemini Enterprise, receba credenciais de acesso (como chaves de API ou autenticação de banco de dados) para a fonte de dados.

  • Verifique se você está usando a versão 7.7.0 ou mais recente do hashicorp/google provedor do Terraform:

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

Criar um repositório de dados genérico

Para usar o Terraform e criar um repositório de dados vazio, use o google_discovery_engine_data_store recurso do Terraform.

  1. Crie a configuração do 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
    }
    

    Substitua:

  2. Inicialize o Terraform:

    terraform init -upgrade
    
  3. Visualize a configuração:

    terraform plan
    
  4. Aplique a configuração:

    terraform apply
    

Depois de criar o repositório de dados vazio, é possível ingerir dados nele usando o Google Cloud console ou comandos da API.

Criar um conector de dados

Para usar o Terraform e criar um conector de dados para um serviço compatível, use o google_discovery_engine_data_connector recurso do Terraform. Inclua credenciais para o serviço, bem como a configuração do filtro de pesquisa, em json_params.

  1. Crie a configuração do 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"
      }
    }
    

    Substitua:

    • PROJECT_ID: ID do seu Google Cloud projeto

    • BILLING_PROJECT_ID: ID do projeto de faturamento Google Cloud

    • LOCAL_NAME: o nome local do recurso do Terraform

    • LOCATION: o local do repositório de dados, como us ou global (para mais informações, consulte Residência de dados e compromissos de processamento regional de ML das edições Standard e Plus do Gemini Enterprise)

    • COLLECTION_ID: o ID da coleção

    • COLLECTION_DISPLAY_NAME: o nome de exibição da coleção

    • DATA_SOURCE: o tipo de fonte de dados. Os seguintes valores são aceitos:

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • CLIENT_ID: o ID do cliente para o serviço

    • CLIENT_SECRET: a chave secreta do cliente para o serviço

    • INSTANCE_URI: o URI da sua instância (por exemplo, https://your-tenant.sharepoint.com)

    • TENANT_ID: o ID do locatário

    • FILTER_KEY: uma chave de filtro (por exemplo, Path)

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

    • ENTITY_NAME: o nome de uma entidade para o conector pesquisar (consulte a documentação do recurso)

    • CONNECTOR_MODES: os modos a serem ativados para o conector (por exemplo, "FEDERATED")

  2. Inicialize o Terraform:

    terraform init -upgrade
    
  3. Visualize a configuração:

    terraform plan
    
  4. Aplique a configuração:

    terraform apply
    

    Quando solicitado, confirme as mudanças.

Depois de aplicar a configuração, você pode conferir o conector de dados na lista de repositórios de dados e conectá-lo a um app Gemini Enterprise. Para mais informações, consulte Conectar um repositório de dados ao app e autorizar o Gemini Enterprise.

Atualizar um conector de dados

Para usar o Terraform e atualizar as configurações de um conector de dados atual, forneça as novas configurações em json_params e forneça todos os argumentos inalterados com os valores atuais para que o Terraform não substitua o recurso. Adicione todos os argumentos necessários que não precisam ser atualizados para ignore_changes no bloco lifecycle.

  1. Crie a configuração do Terraform. Este exemplo atualiza a configuração structured_search_filter com um novo valor de filtro, mas lista outros campos obrigatórios, como refresh_interval, entities e connector_modes, com os valores atuais.

    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
        ]
      }
    }
    

    Substitua:

    • PROJECT_ID: ID do seu Google Cloud projeto

    • BILLING_PROJECT_ID: ID do projeto de faturamento Google Cloud

    • LOCAL_NAME: o nome local do recurso do Terraform

    • LOCATION: o local do repositório de dados, como us ou global (para mais informações, consulte Residência de dados e compromissos de processamento regional de ML das edições Standard e Plus do Gemini Enterprise)

    • COLLECTION_ID: o ID da coleção

    • COLLECTION_DISPLAY_NAME: o nome de exibição da coleção

    • DATA_SOURCE: o tipo de fonte de dados. Os seguintes valores são aceitos:

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • FILTER_KEY: uma chave de filtro para a qual você quer atualizar o valor (por exemplo, Path)

    • UPDATED_FILTER_VALUE: o novo valor de filtro (por exemplo, https://other.sharepoint.com/*)

    • REFRESH_INTERVAL: o intervalo de atualização

    • ENTITY_NAME: o nome de uma entidade para o conector pesquisar (consulte a documentação do recurso)

    • CONNECTOR_MODES: os modos a serem ativados para o conector (por exemplo, "FEDERATED")

  2. Execute terraform import para indicar que essa é uma operação de atualização:

    terraform import \
    google_discovery_engine_data_connector.LOCAL_NAME \
    projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataConnector
    
  3. Visualize a configuração:

    terraform plan
    

    A saída será semelhante a esta:

    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.
    

    Verifique se a linha final da saída especifica 0 to add, 1 to change, 0 to destroy.

  4. Aplique a configuração:

    terraform apply
    

    Quando solicitado, confirme as mudanças.

    A saída será semelhante a esta:

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

A seguir