Membuat penyimpanan data menggunakan Terraform

Anda dapat menggunakan Terraform untuk membuat penyimpanan data Gemini Enterprise generik atau menyiapkan konektor data untuk Atlassian Confluence, Atlassian Jira, BigQuery, Microsoft SharePoint, atau Salesforce.

Sebelum memulai

Sebelum menggunakan Terraform untuk membuat penyimpanan data, lakukan hal berikut:

  • Periksa apakah penagihan diaktifkan di project Google Cloud Anda.

  • Pastikan Anda memiliki peran Project IAM Admin (roles/resourcemanager.projectIamAdmin) untuk project Google Cloud Anda, serta peran Gemini Enterprise Admin (roles/discoveryengine.agentspaceAdmin).

  • Opsional: Jika Anda menghubungkan sumber data pihak ketiga seperti Microsoft SharePoint ke Gemini Enterprise, dapatkan kredensial akses (seperti kunci API atau autentikasi database) untuk sumber data tersebut.

  • Pastikan Anda menggunakan penyedia Terraform hashicorp/google versi 7.7.0 atau yang lebih baru:

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

Membuat penyimpanan data umum

Untuk menggunakan Terraform guna membuat penyimpanan data kosong, gunakan resource Terraform google_discovery_engine_data_store.

  1. Buat konfigurasi 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
    }
    

    Ganti kode berikut:

  2. Lakukan inisialisasi Terraform:

    terraform init -upgrade
    
  3. Lihat pratinjau konfigurasi Anda:

    terraform plan
    
  4. Terapkan konfigurasi:

    terraform apply
    

Setelah membuat penyimpanan data kosong, Anda dapat menyerap data ke dalam penyimpanan data menggunakan konsol Google Cloud atau perintah API.

Membuat konektor data

Untuk menggunakan Terraform guna membuat konektor data untuk layanan yang didukung, gunakan resource Terraform google_discovery_engine_data_connector. Sertakan kredensial untuk layanan, serta konfigurasi filter penelusuran, di json_params.

  1. Buat konfigurasi 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"
      }
    }
    

    Ganti kode berikut:

    • PROJECT_ID: Project ID Google Cloud Anda

    • BILLING_PROJECT_ID: Project ID Google Cloud penagihan Anda

    • LOCAL_NAME: nama lokal resource Terraform

    • LOCATION: lokasi untuk penyimpanan data, seperti us atau global (untuk mengetahui informasi selengkapnya, lihat Komitmen residensi data dan pemrosesan regional ML Gemini Enterprise Edisi Standard dan Plus)

    • COLLECTION_ID: ID koleksi

    • COLLECTION_DISPLAY_NAME: nama tampilan koleksi

    • DATA_SOURCE: jenis sumber data. Nilai berikut didukung:

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • CLIENT_ID: client ID untuk layanan

    • CLIENT_SECRET: rahasia klien untuk layanan

    • INSTANCE_URI: URI instance Anda (misalnya, https://your-tenant.sharepoint.com)

    • TENANT_ID: ID tenant

    • FILTER_KEY: kunci filter (misalnya, Path)

    • FILTER_VALUE: nilai filter (misalnya, "https://example.sharepoint.com/*")

    • ENTITY_NAME: nama entity yang akan ditelusuri konektor (lihat dokumentasi resource)

    • CONNECTOR_MODES: mode yang akan diaktifkan untuk konektor (misalnya, "FEDERATED")

  2. Lakukan inisialisasi Terraform:

    terraform init -upgrade
    
  3. Lihat pratinjau konfigurasi Anda:

    terraform plan
    
  4. Terapkan konfigurasi:

    terraform apply
    

    Saat diminta, konfirmasi perubahan Anda.

Setelah menerapkan konfigurasi, Anda dapat melihat konektor data dalam daftar penyimpanan data dan dapat menghubungkannya ke aplikasi Gemini Enterprise. Untuk informasi selengkapnya, lihat Menghubungkan penyimpanan data ke aplikasi dan memberikan otorisasi kepada Gemini Enterprise.

Memperbarui konektor data

Untuk menggunakan Terraform guna memperbarui setelan konektor data yang ada, berikan setelan baru di json_params, dan berikan argumen yang tidak berubah dengan nilai saat ini agar Terraform tidak mengganti resource. Tambahkan argumen yang diperlukan yang tidak perlu diupdate ke ignore_changes di blok lifecycle.

  1. Buat konfigurasi Terraform. Contoh ini memperbarui setelan structured_search_filter dengan nilai filter baru, tetapi mencantumkan kolom wajib diisi lainnya seperti refresh_interval, entities, dan connector_modes dengan nilai saat ini.

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

    Ganti kode berikut:

    • PROJECT_ID: Project ID Google Cloud Anda

    • BILLING_PROJECT_ID: Project ID Google Cloud penagihan Anda

    • LOCAL_NAME: nama lokal resource Terraform

    • LOCATION: lokasi untuk penyimpanan data, seperti us atau global (untuk mengetahui informasi selengkapnya, lihat Komitmen residensi data dan pemrosesan regional ML Gemini Enterprise Edisi Standard dan Plus)

    • COLLECTION_ID: ID koleksi

    • COLLECTION_DISPLAY_NAME: nama tampilan koleksi

    • DATA_SOURCE: jenis sumber data. Nilai berikut didukung:

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • FILTER_KEY: kunci filter yang nilainya ingin Anda perbarui (misalnya, Path)

    • UPDATED_FILTER_VALUE: nilai filter baru (misalnya, https://other.sharepoint.com/*)

    • REFRESH_INTERVAL: interval refresh

    • ENTITY_NAME: nama entity yang akan ditelusuri konektor (lihat dokumentasi resource)

    • CONNECTOR_MODES: mode yang akan diaktifkan untuk konektor (misalnya, "FEDERATED")

  2. Jalankan terraform import untuk menunjukkan bahwa ini adalah operasi update:

    terraform import \
    google_discovery_engine_data_connector.LOCAL_NAME \
    projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataConnector
    
  3. Lihat pratinjau konfigurasi Anda:

    terraform plan
    

    Outputnya akan mirip dengan berikut ini:

    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.
    

    Pastikan baris terakhir output menentukan 0 to add, 1 to change, 0 to destroy.

  4. Terapkan konfigurasi:

    terraform apply
    

    Saat diminta, konfirmasi perubahan Anda.

    Outputnya akan mirip dengan berikut ini:

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

Langkah berikutnya