使用 Terraform 管理 Azure Databricks Git 文件夹

可以使用 Terraform 和 databricks_repoTerraform 资源在完全自动化的环境中管理 Azure Databricks Git 文件夹。

本主题介绍两种身份验证方法:

  • 个人访问令牌(PAT)身份验证: 使用 Git 个人访问令牌进行存储库访问
  • 具有联合凭据的服务主体: 将 Azure 服务主体与 OpenID Connect (OIDC) 令牌配合使用,以便对 Azure DevOps 存储库进行安全无令牌身份验证

使用个人访问令牌进行身份验证

此方法使用 Git 个人访问令牌进行存储库身份验证。

在您的 Terraform 配置文件(.tf)中,将 databricks_repo 设置为您用于 Git 目录的 Git 存储库的 URL:

resource "databricks_repo" "this" {
  url = "https://github.com/user/demo.git"
}

若要将 Azure Databricks 服务主体与基于个人访问令牌的 Git 凭据配合使用,请执行以下步骤:

步骤 1:配置 Azure Databricks 提供程序

将提供程序 databricks 设置为 Azure Databricks 工作区的 URL。 将在后面的步骤中定义访问令牌 databricks_obo_token

provider "databricks" {
  # Configuration options
}

# Example 'databricks' provider configuration
provider "databricks" {
  alias = "sp"
  host = "https://....cloud.databricks.com"
  token = databricks_obo_token.this.token_value
}

步骤 2:创建服务主体

定义 Azure Databricks 服务主体的资源。 可以在 Azure Databricks 帐户控制台的用户管理>服务主体下找到服务主体名称。

resource "databricks_service_principal" "sp" {
  display_name = "<service_principal_name_here>"
}

步骤 3:创建授权令牌

使用应用程序 ID 为 Azure Databricks 服务主体帐户设置授权令牌。 可以在 Azure Databricks 帐户控制台的用户管理>服务主体中找到服务主体的应用程序 ID。

resource "databricks_obo_token" "this" {
  application_id   = databricks_service_principal.sp.application_id
  comment          = "PAT on behalf of ${databricks_service_principal.sp.display_name}"
  lifetime_seconds = 3600
}

步骤 4:配置 Git 凭据

设置服务主体将用于访问 Git 存储库的 Git 凭据。

resource "databricks_git_credential" "sp" {
  provider = databricks.sp
  depends_on = [databricks_obo_token.this]
  git_username          = "<the_git_user_account_used_by_the_servcie_principal>"
  git_provider          = "<your_git_provider_string here>"
  personal_access_token = "<auth_token_string_for_git_user>"
}

使用服务主体和联合凭据进行身份验证

对于 Azure DevOps 存储库,可以使用联合标识凭据进行身份验证,而无需存储长期机密。 此方法将 Azure Databricks 服务主体与 Azure DevOps 管道颁发的 OIDC 令牌配合使用,从而无需个人访问令牌。

先决条件

在为 Azure Databricks Git 文件夹设置联合标识身份验证之前,请配置以下组件:

步骤 1:配置变量

指定文件中以下变量 terraform.tfvars 的值:

  • databricks_host:Azure Databricks 工作区的 URL,例如 https://adb-123417477717.17.databricks.azure.cn
  • entra_client_id:Azure 服务主体的客户端 ID
  • entra_client_secret:Azure 服务主体的客户端密钥
  • entra_tenant_id:服务主体注册的 Microsoft Entra ID
  • ado_repo_url:Azure DevOps 中 Git 存储库的 HTTPS URL

步骤 2:配置 Azure Databricks 提供程序

在 Terraform 配置中,使用官方 databricks 提供程序。 服务提供者的身份验证可以使用您组织的标准方法,例如在持续集成(CI)中使用环境变量或者在从安全工作站运行 Terraform 时用服务主体。

terraform {
  required_providers {
    databricks = {
      source  = "databricks/databricks"
      version = "1.78.0"
    }
  }
}

provider "databricks" {
  host                = var.databricks_host
  azure_client_id     = var.entra_client_id
  azure_client_secret = var.entra_client_secret
  azure_tenant_id     = var.entra_tenant_id
}

步骤 3:为 Azure DevOps 创建联合 Git 凭据

此凭据告知 Azure Databricks 使用 Azure DevOps 支持的 Azure Active Directory 联合身份验证。

resource "databricks_git_credential" "sp_ado" {
  git_provider            = "azureDevOpsServicesAad"
  is_default_for_provider = true
}

步骤 4:将 Git 文件夹指向 Azure DevOps 存储库

创建或更新 Git 目录以使用您的 Azure DevOps 存储库 URL。

resource "databricks_repo" "this" {
  url        = var.ado_repo_url
  depends_on = [databricks_git_credential.sp_ado]
}