Membuat penyimpanan data menggunakan Terraform

Anda dapat menggunakan Terraform untuk membuat penyimpanan data Gemini Enterprise generik atau untuk 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 , serta peran Admin Gemini Enterprise (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 memasukkan data ke dalam penyimpanan data menggunakan perintah API atau konsol Google Cloud .

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: ID project penagihan Google Cloud Anda

    • LOCAL_NAME: nama lokal resource Terraform

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

    • 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: ID klien 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 dicari oleh 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 mengetahui informasi selengkapnya, lihat Menghubungkan penyimpanan data ke aplikasi dan memberikan otorisasi Gemini Enterprise.

Memperbarui konektor data

Untuk menggunakan Terraform dalam 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 diperbarui 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: ID project penagihan Google Cloud Anda

    • LOCAL_NAME: nama lokal resource Terraform

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

    • 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 ingin Anda perbarui nilainya (misalnya, Path)

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

    • REFRESH_INTERVAL: interval pembaruan

    • ENTITY_NAME: nama entity yang akan dicari oleh 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 output terakhir 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