Azure Pipeline执行Terraform部署Databricks时默认凭据配置失败
问题分析与解决方案
这个错误是Terraform的Databricks Provider在访问Databricks工作区API获取Spark版本时,认证配置失效导致的。虽然你已配置ARM相关环境变量,但Databricks Provider需要明确关联刚创建的工作区,且认证参数要正确传递。以下是具体解决步骤:
1. 显式配置Databricks Provider参数
在Terraform代码中添加Databricks Provider块,直接关联刚创建的工作区资源与服务主体认证信息,避免依赖默认profile的不确定性:
provider "databricks" { # 绑定刚创建的Databricks工作区URL host = "https://${azurerm_databricks_workspace.dbw-uks.workspace_url}" # 服务主体凭据,可从变量或环境变量读取 azure_client_id = var.azure_client_id azure_client_secret = var.azure_client_secret azure_tenant_id = var.azure_tenant_id # 关联Azure中Databricks工作区的资源ID,确保权限验证链路完整 azure_workspace_resource_id = azurerm_databricks_workspace.dbw-uks.id }
2. 验证Azure Pipeline环境变量传递
确保Terraform执行任务中已正确传递以下环境变量:
ARM_CLIENT_ID:服务主体的客户端IDARM_CLIENT_SECRET:服务主体的客户端密钥ARM_TENANT_ID:服务主体所属的Azure AD租户ID
如果用Terraform变量存储这些值,需确认变量已通过Pipeline变量组或秘密变量正确注入。
3. 补全服务主体权限
除Databricks账户管理员角色外,需确保服务主体在Azure资源层面拥有:
- 对Databricks工作区资源的Contributor或Owner角色(可在Azure Portal的工作区IAM设置中添加)
Microsoft.Databricks/workspaces/read权限,确保能读取工作区配置信息
4. 简化依赖配置(可选)
由于databricks_spark_version和databricks_node_type已通过Provider关联工作区资源,Terraform会自动处理依赖关系,可移除这两个数据资源中的depends_on块,简化代码。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

