Créer un data store à l'aide de Terraform

Vous pouvez utiliser Terraform pour créer un data store Gemini Enterprise générique ou pour configurer des connecteurs de données pour Atlassian Confluence, Atlassian Jira, BigQuery, Microsoft SharePoint ou Salesforce.

Avant de commencer

Avant d'utiliser Terraform pour créer un data store, procédez comme suit :

  • Vérifiez si la facturation est activée pour votre Google Cloud projet.

  • Assurez-vous de disposer du rôle Administrateur de projet IAM (roles/resourcemanager.projectIamAdmin) pour votre Google Cloud projet, ainsi que du rôle Administrateur Gemini Enterprise (roles/discoveryengine.agentspaceAdmin) rôle.

  • Facultatif : Si vous connectez une source de données tierce telle que Microsoft SharePoint à Gemini Enterprise, obtenez des identifiants d'accès (tels que des clés API ou une authentification de base de données) pour la source de données.

  • Assurez-vous d'utiliser la version 7.7.0 ou ultérieure du fournisseur Terraform hashicorp/google :

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

Créer un data store générique

Pour utiliser Terraform afin de créer un data store vide, utilisez la google_discovery_engine_data_store ressource Terraform.

  1. Créez la configuration 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
    }
    

    Remplacez les éléments suivants :

  2. Initialisez Terraform :

    terraform init -upgrade
    
  3. Prévisualisez votre configuration :

    terraform plan
    
  4. Appliquez la configuration :

    terraform apply
    

Après avoir créé le data store vide, vous pouvez ingérer des données dans le data store à l'aide de la Google Cloud console ou des commandes de l'API.

Créer un connecteur de données

Pour utiliser Terraform afin de créer un connecteur de données pour un service compatible, utilisez la google_discovery_engine_data_connector ressource Terraform. Incluez les identifiants du service, ainsi que la configuration du filtre de recherche, dans json_params.

  1. Créez la configuration 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"
      }
    }
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre Google Cloud projet

    • BILLING_PROJECT_ID: ID de votre Google Cloud projet de facturation

    • LOCAL_NAME : nom local de la ressource Terraform

    • LOCATION : emplacement du data store, tel que us ou global (pour en savoir plus, consultez Résidence des données et engagements de traitement régional ML pour les éditions Standard et Plus de Gemini Enterprise)

    • COLLECTION_ID : ID de la collection

    • COLLECTION_DISPLAY_NAME : nom à afficher de la collection

    • DATA_SOURCE : type de source de données. Les valeurs suivantes sont acceptées :

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • CLIENT_ID : ID client du service

    • CLIENT_SECRET : code secret du client du service

    • INSTANCE_URI: URI de votre instance (par exemple, https://your-tenant.sharepoint.com)

    • TENANT_ID : ID du locataire

    • FILTER_KEY : clé de filtre (par exemple, Path)

    • FILTER_VALUE : valeur de filtre (par exemple, "https://example.sharepoint.com/*")

    • ENTITY_NAME : nom d'une entité à rechercher par le connecteur (consultez la documentation sur les ressources)

    • CONNECTOR_MODES : modes à activer pour le connecteur (par exemple, "FEDERATED")

  2. Initialisez Terraform :

    terraform init -upgrade
    
  3. Prévisualisez votre configuration :

    terraform plan
    
  4. Appliquez la configuration :

    terraform apply
    

    Lorsque vous y êtes invité, confirmez vos modifications.

Une fois la configuration appliquée, vous pouvez voir le connecteur de données dans la liste des datastores et le connecter à une application Gemini Enterprise. Pour en savoir plus, consultez Connecter un data store à une application et autoriser Gemini Enterprise.

Mettre à jour un connecteur de données

Pour utiliser Terraform afin de mettre à jour les paramètres d'un connecteur de données existant, fournissez les nouveaux paramètres dans json_params, ainsi que tous les arguments inchangés avec leurs valeurs actuelles afin que Terraform ne remplace pas la ressource. Ajoutez tous les arguments requis qui n'ont pas besoin d'être mis à jour à ignore_changes dans le bloc lifecycle.

  1. Créez la configuration Terraform. Cet exemple met à jour le paramètre structured_search_filter avec une nouvelle valeur de filtre, mais répertorie d'autres champs obligatoires tels que refresh_interval, entities et connector_modes avec leurs valeurs actuelles.

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

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre Google Cloud projet

    • BILLING_PROJECT_ID: ID de votre Google Cloud projet de facturation

    • LOCAL_NAME : nom local de la ressource Terraform

    • LOCATION : emplacement du data store, tel que us ou global (pour en savoir plus, consultez Résidence des données et engagements de traitement régional ML pour les éditions Standard et Plus de Gemini Enterprise)

    • COLLECTION_ID : ID de la collection

    • COLLECTION_DISPLAY_NAME : nom à afficher de la collection

    • DATA_SOURCE : type de source de données. Les valeurs suivantes sont acceptées :

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • FILTER_KEY: clé de filtre pour laquelle vous souhaitez mettre à jour la valeur (par exemple, Path)

    • UPDATED_FILTER_VALUE: nouvelle valeur de filtre (par exemple, https://other.sharepoint.com/*)

    • REFRESH_INTERVAL : intervalle d'actualisation

    • ENTITY_NAME : nom d'une entité à rechercher par le connecteur (consultez la documentation sur les ressources)

    • CONNECTOR_MODES : modes à activer pour le connecteur (par exemple, "FEDERATED")

  2. Exécutez terraform import pour indiquer qu'il s'agit d'une opération de mise à jour :

    terraform import \
    google_discovery_engine_data_connector.LOCAL_NAME \
    projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID/dataConnector
    
  3. Prévisualisez votre configuration :

    terraform plan
    

    La sortie devrait ressembler à ce qui suit :

    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.
    

    Assurez-vous que la dernière ligne de sortie spécifie 0 to add, 1 to change, 0 to destroy.

  4. Appliquez la configuration :

    terraform apply
    

    Lorsque vous y êtes invité, confirmez vos modifications.

    La sortie devrait ressembler à ce qui suit :

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

Étape suivante