יצירת מאגר נתונים באמצעות 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 ואילך של ספק Terraform‏ hashicorp/google:

    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 (מידע נוסף זמין במאמר התחייבויות לגבי מיקום אחסון הנתונים ועיבוד אזורי של למידת מכונה במהדורות 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 לא תחליף את המשאב. מוסיפים את כל הארגומנטים הנדרשים שלא צריך לעדכן ל-ignore_changes בבלוק lifecycle.

  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 (מידע נוסף זמין במאמר התחייבויות לגבי מיקום אחסון הנתונים ועיבוד אזורי של למידת מכונה במהדורות 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.
    

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