יצירת מאגר נתונים באמצעות Terraform

אתם יכולים להשתמש ב-Terraform כדי ליצור מאגר נתונים כללי של Gemini Enterprise או כדי להגדיר מחברים של נתונים ל-Atlassian Confluence, ל-Atlassian Jira, ל-BigQuery, ל-Microsoft SharePoint או ל-Salesforce.

לפני שמתחילים

לפני שמשתמשים ב-Terraform כדי ליצור מאגר נתונים, צריך לבצע את הפעולות הבאות:

  • איך בודקים אם החיוב מופעל בפרויקט Google Cloud

  • מוודאים שיש לכם את התפקיד 'אדמין IAM בפרויקט' (roles/resourcemanager.projectIamAdmin) בפרויקט Google Cloud , וגם את התפקיד 'אדמין Gemini Enterprise' (roles/discoveryengine.agentspaceAdmin).

  • אופציונלי: אם אתם מקשרים מקור נתונים של צד שלישי כמו Microsoft SharePoint ל-Gemini Enterprise, צריך לקבל פרטי גישה (כמו מפתחות API או אימות מסד נתונים) למקור הנתונים.

  • מוודאים שאתם משתמשים בגרסה 7.7.0 ואילך של hashicorp/google Terraform provider:

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

יצירת מאגר נתונים כללי

כדי להשתמש ב-Terraform כדי ליצור מאגר נתונים ריק, משתמשים במשאב Terraform‏ google_discovery_engine_data_store.

  1. יוצרים את התצורה של 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
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

  2. מאתחלים את Terraform:

    terraform init -upgrade
    
  3. תצוגה מקדימה של ההגדרה:

    terraform plan
    
  4. מחילים את ההגדרה:

    terraform apply
    

אחרי שיוצרים את מאגר הנתונים הריק, אפשר להטמיע בו נתונים באמצעות פקודות Google Cloud במסוף או ב-API.

יצירת מחבר נתונים

כדי להשתמש ב-Terraform כדי ליצור מחבר נתונים לשירות נתמך, משתמשים במשאב Terraform‏ google_discovery_engine_data_connector. כוללים ב-json_params את פרטי הכניסה לשירות, וגם את הגדרת מסנן החיפוש.

  1. יוצרים את התצורה של 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"
      }
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud

    • BILLING_PROJECT_ID: מזהה פרויקט החיוב ב- Google Cloud

    • LOCAL_NAME: השם המקומי של משאב Terraform

    • LOCATION: המיקום של מאגר הנתונים, כמו us או global (מידע נוסף זמין במאמר בנושא מחויבויות בנוגע למיקום הנתונים ולעיבוד האזורי של ML במהדורות Gemini Enterprise Standard ו-Plus)

    • COLLECTION_ID: מזהה הקולקציה

    • COLLECTION_DISPLAY_NAME: השם המוצג של האוסף

    • DATA_SOURCE: סוג מקור הנתונים. יש תמיכה בערכים הבאים:

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • CLIENT_ID: מזהה הלקוח של השירות

    • CLIENT_SECRET: סוד הלקוח של השירות

    • INSTANCE_URI: ה-URI של המכונה (לדוגמה, https://your-tenant.sharepoint.com)

    • TENANT_ID: מזהה הדייר

    • FILTER_KEY: מפתח מסנן (לדוגמה, Path)

    • FILTER_VALUE: ערך סינון (לדוגמה, "https://example.sharepoint.com/*")

    • ENTITY_NAME: השם של ישות שהמחבר צריך לחפש (ראו מסמכי העזרה בנושא משאבים)

    • CONNECTOR_MODES: המצבים להפעלה עבור המחבר (לדוגמה, "FEDERATED")

  2. מאתחלים את Terraform:

    terraform init -upgrade
    
  3. תצוגה מקדימה של ההגדרה:

    terraform plan
    
  4. מחילים את ההגדרה:

    terraform apply
    

    כשתופיע בקשה לאשר את השינויים, עשו את זה.

אחרי שמחילים את ההגדרה, אפשר לראות את מחבר הנתונים ברשימת מאגרי הנתונים ולקשר אותו לאפליקציית Gemini Enterprise. מידע נוסף זמין במאמר קישור מאגר נתונים לאפליקציה והרשאת Gemini Enterprise.

עדכון מחבר נתונים

כדי להשתמש ב-Terraform לעדכון ההגדרות של מחבר נתונים קיים, צריך לספק את ההגדרות החדשות ב-json_params ולספק את הארגומנטים שלא השתנו עם הערכים הנוכחיים שלהם, כדי ש-Terraform לא תחליף את המשאב. מוסיפים לבלוק lifecycle את הארגומנטים הנדרשים שלא צריך לעדכן, ומגדירים אותם כ-ignore_changes.

  1. יוצרים את ההגדרות של Terraform. בדוגמה הזו, הגדרת structured_search_filter מתעדכנת עם ערך סינון חדש, אבל מוצגים גם שדות חובה אחרים כמו refresh_interval, entities ו-connector_modes עם הערכים הנוכחיים שלהם.

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

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud

    • BILLING_PROJECT_ID: מזהה פרויקט החיוב ב- Google Cloud

    • LOCAL_NAME: השם המקומי של משאב Terraform

    • LOCATION: המיקום של מאגר הנתונים, כמו us או global (מידע נוסף זמין במאמר בנושא מחויבויות בנוגע למיקום הנתונים ולעיבוד האזורי של ML במהדורות Gemini Enterprise Standard ו-Plus)

    • COLLECTION_ID: מזהה הקולקציה

    • COLLECTION_DISPLAY_NAME: השם המוצג של האוסף

    • DATA_SOURCE: סוג מקור הנתונים. יש תמיכה בערכים הבאים:

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • FILTER_KEY: מפתח סינון שרוצים לעדכן את הערך שלו (לדוגמה, Path)

    • UPDATED_FILTER_VALUE: ערך הסינון החדש (לדוגמה, https://other.sharepoint.com/*)

    • REFRESH_INTERVAL: מרווח הזמן לרענון

    • ENTITY_NAME: השם של ישות שהמחבר צריך לחפש (ראו מסמכי העזרה בנושא משאבים)

    • CONNECTOR_MODES: המצבים להפעלה עבור המחבר (לדוגמה, "FEDERATED")

  2. מריצים את הפקודה terraform import כדי לציין שזו פעולת עדכון:

    terraform import \
    google_discovery_engine_data_connector.LOCAL_NAME \
    projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataConnector
    
  3. תצוגה מקדימה של ההגדרה:

    terraform plan
    

    הפלט אמור להיראות כך:

    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.
    

    מוודאים שהשורה האחרונה של הפלט מציינת 0 to add, 1 to change, 0 to destroy.

  4. מחילים את ההגדרה:

    terraform apply
    

    כשתופיע בקשה לאשר את השינויים, עשו את זה.

    הפלט אמור להיראות כך:

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

המאמרים הבאים