0

我正在尝试使用文档中的示例代码创建一个 databricks 实例配置文件

Terraform 可以成功生成计划,但是当我尝试应用它时,它给了我这个错误:

╷
│ Error: cannot create instance profile: authentication is not configured for provider.. Please check https://registry.terraform.io/providers/databrickslabs/databricks/latest/docs#authentication for details
│
│   with databricks_instance_profile.shared,
│   on IAM.tf line 73, in resource "databricks_instance_profile" "shared":
│   73: resource "databricks_instance_profile" "shared" {

我在我的 terraform tfvars 文件中为数据块设置了用户名/密码身份验证,这很有效 - 它能够实际提供工作区,但在创建实例配置文件时失败。

感谢任何关于我做错了什么的意见。

4

1 回答 1

1

通常,当您创建工作空间并尝试在同一个 terraform 模板中使用它时,会出现此类问题。解决方案是有两个 Databricks 提供程序声明 - 一个将用于创建工作区,第二个 - 用于创建工作区内的对象。AWS 配置指南是官方文档的一部分,包含完整示例:

provider "databricks" {
  alias    = "mws"
  host     = "https://accounts.cloud.databricks.com"
  username = var.databricks_account_username
  password = var.databricks_account_password
}

# Notice "provider = databricks.mws" !
resource "databricks_mws_credentials" "this" {
  provider         = databricks.mws
  account_id       = var.databricks_account_id
  role_arn         = aws_iam_role.cross_account_role.arn
  credentials_name = "${local.prefix}-creds"
  depends_on       = [aws_iam_role_policy.this]
}

provider "databricks" {
  host  = var.databricks_host
  token = var.databricks_token
}

resource "databricks_instance_profile" "shared" {
  depends_on = [databricks_mws_workspaces.this]
  instance_profile_arn = aws_iam_instance_profile.shared.arn
}

另一个常见问题是 Terraform 试图并行运行尽可能多的任务,因此它可能会尝试在创建工作区之前创建 Terraform 资源 - 这在 AWS 配置指南中有明确记录,因此您需要depends_on = [databricks_mws_workspaces.this]添加所有 databricks 资源,因此 Terraform 在创建工作空间之前不会尝试创建 Databricks 对象:

PS 还建议升级到最新版本的提供程序(截至目前为 0.4.4),该版本对此类问题有更好的错误消息。

于 2022-01-10T07:31:10.207 回答