Terraform을 사용하여 데이터 스토어 만들기

Terraform을 사용하여 일반 Gemini Enterprise 데이터 스토어를 만들거나 Atlassian Confluence, Atlassian Jira, BigQuery, Microsoft SharePoint 또는 Salesforce용 데이터 커넥터를 설정할 수 있습니다.

시작하기 전에

Terraform을 사용하여 데이터 스토어를 만들기 전에 다음을 수행하세요.

일반 데이터 스토어 만들기

Terraform을 사용하여 빈 데이터 스토어를 만들려면 google_discovery_engine_data_store Terraform 리소스를 사용합니다.

  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을 사용하여 지원되는 서비스의 데이터 커넥터를 만들려면 google_discovery_engine_data_connector Terraform 리소스를 사용합니다. 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: 프로젝트 ID Google Cloud

    • BILLING_PROJECT_ID: 결제 프로젝트 ID Google Cloud

    • LOCAL_NAME: Terraform 리소스의 로컬 이름

    • LOCATION: 데이터 스토어의 위치(예: us 또는 global)(자세한 내용은 다음 참고: Gemini Enterprise Standard 및 Plus 에디션 데이터 상주 및 ML 리전 처리 약정)

    • COLLECTION_ID: 컬렉션 ID

    • COLLECTION_DISPLAY_NAME: 컬렉션 표시 이름

    • DATA_SOURCE: 데이터 소스 유형. 다음 값이 지원됩니다.

      • bigquery

      • confluence

      • jira

      • salesforce

      • sharepoint_federated_search

    • CLIENT_ID: 서비스의 클라이언트 ID

    • CLIENT_SECRET: 서비스의 클라이언트 비밀번호

    • INSTANCE_URI: 인스턴스의 URI (예: https://your-tenant.sharepoint.com)

    • TENANT_ID: 테넌트 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: 프로젝트 ID Google Cloud

    • BILLING_PROJECT_ID: 결제 프로젝트 ID Google Cloud

    • LOCAL_NAME: Terraform 리소스의 로컬 이름

    • LOCATION: 데이터 스토어의 위치(예: us 또는 global)(자세한 내용은 다음 참고: Gemini Enterprise Standard 및 Plus 에디션 데이터 상주 및 ML 리전 처리 약정)

    • COLLECTION_ID: 컬렉션 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.
    

다음 단계