1

我在让 azurerm 和 databricks 提供程序一起工作时遇到了一些麻烦。

使用 azurerm 提供程序,设置我的工作区

resource "azurerm_databricks_workspace" "ws" {
  name                        = var.workspace_name
  resource_group_name         = azurerm_resource_group.rg.name
  location                    = azurerm_resource_group.rg.location
  sku                         = "premium"
  managed_resource_group_name = "${azurerm_resource_group.rg.name}-mng-rg"
  custom_parameters {
    virtual_network_id  = data.azurerm_virtual_network.vnet.id
    public_subnet_name  = var.public_subnet
    private_subnet_name = var.private_subnet
  }
}

无论我如何构建它,我都不能说似乎可以azurerm_databricks_workspace.ws.id在相同配置中的数据块的提供程序语句中工作。如果它确实有效,则上述工作区将在相同的配置中定义,并且我将有一个如下所示的提供程序语句:

provider "databricks" {
  azure_workspace_resource_id = azurerm_databricks_workspace.ws.id
}

错误: 数据块身份验证错误

我将我的 ARM_* 环境变量设置为在订阅上标识为具有贡献者的服务主体。

我已经尝试过相同的配置和模块并使用输出。我可以让它工作的唯一方法是为工作区运行一个配置,并为使用工作区运行第二个配置。

这是超级次优的,因为我在这些配置中有相当数量的重复值,并且只有一个是理想的。

有没有人能够做到这一点?谢谢 :)

4

3 回答 3

2

因为我正在使用模块,所以我在不工作的数据块提供程序上遇到了完全相同的问题。我将 databricks 基础设施(Azure)与 databricks 应用程序(databricks 提供程序)分开。

在我的 databricks 模块中,我在顶部添加了以下代码,否则它将使用我的天蓝色设置:

terraform {
  required_providers {
    databricks = {
      source = "databrickslabs/databricks"
      version = "0.3.1"
    }
  }
}

在我的正常提供程序设置中,我有以下数据块设置:

provider "databricks" {
  azure_workspace_resource_id = module.databricks_infra.databricks_workspace_id
  azure_client_id             = var.ARM_CLIENT_ID
  azure_client_secret         = var.ARM_CLIENT_SECRET
  azure_tenant_id             = var.ARM_TENANT_ID
}

当然,我有天蓝色的。让我知道它是否有效:)

于 2021-05-11T09:28:34.730 回答
1

如果您在此示例中部署资源时遇到技术困难,请确保环境变量与其他提供程序块属性冲突。如有疑问,请运行通过环境变量TF_LOG=DEBUG terraform apply启用调试模式。TF_LOG专门查找Explicit and implicit attributes应指示使用的身份验证属性的行。技术困难的另一个常见原因可能与块中缺少alias属性provider "databricks" {}或块中provider属性有关resource "databricks_..." {}。请务必阅读alias:Multiple Provider Configurations文档文章。

于 2021-05-15T13:28:39.433 回答
0

从错误消息中,Authentication is not configured for provider您可以通过上面提到的以下选项之一进行配置。

有关更多详细信息,请参阅Databricks 提供程序 - 身份验证

为了通过custom_parameters,您可以查看解决类似问题的SO线程。

如果您在这个问题上需要更多帮助,我建议在这里打开一个问题: https ://github.com/terraform-providers/terraform-provider-azurerm/issues

于 2021-05-11T03:48:04.900 回答