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 projet Google Cloud .

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

  • 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 ressource Terraform google_discovery_engine_data_store.

  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 y ingérer des données à l'aide de la console Google Cloud 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 ressource Terraform google_discovery_engine_data_connector. 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 projet Google Cloud

    • BILLING_PROJECT_ID : ID de votre projet de facturation Google Cloud

    • LOCAL_NAME : nom local de la ressource Terraform

    • LOCATION : emplacement du data store, tel que us ou global (pour en savoir plus, consultez Engagements concernant la résidence des données et le traitement régional du 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 pour le 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é que le connecteur doit rechercher (voir 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.

Après avoir appliqué la configuration, vous pouvez voir le connecteur de données dans la liste des datastores et l'associer à une application Gemini Enterprise. Pour en savoir plus, consultez Associer 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 et indiquez 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 liste 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 projet Google Cloud

    • BILLING_PROJECT_ID : ID de votre projet de facturation Google Cloud

    • LOCAL_NAME : nom local de la ressource Terraform

    • LOCATION : emplacement du data store, tel que us ou global (pour en savoir plus, consultez Engagements concernant la résidence des données et le traitement régional du 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 dont vous souhaitez modifier la valeur (par exemple, Path)

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

    • REFRESH_INTERVAL : intervalle d'actualisation

    • ENTITY_NAME : nom d'une entité que le connecteur doit rechercher (voir 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 résultat indique 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.
    

Étapes suivantes