如何通过Terraform变量传入Databricks URL与Token创建集群等资源?
实现方案
一、在variables.tf中直接传入URL和Token完成认证
- 先在
variables.tf中定义敏感变量:
variable "databricks_workspace_url" { type = string description = "Databricks工作区URL" } variable "databricks_token" { type = string description = "Databricks工作区认证Token" sensitive = true # 标记为敏感变量,避免Terraform输出泄露 }
- 在主配置文件(如
main.tf)中配置Databricks Provider,直接引用上述变量:
terraform { required_providers { databricks = { source = "databricks/databricks" version = ">= 1.20.0" # 按需指定合适的版本 } } } provider "databricks" { host = var.databricks_workspace_url token = var.databricks_token }
之后可以通过两种方式传入变量值:
- 命令行直接传递:
terraform apply -var="databricks_workspace_url=https://your-workspace-url" -var="databricks_token=your-token-value"
- 写入
.tfvars文件(注意不要提交到版本控制):
# terraform.tfvars databricks_workspace_url = "https://your-workspace-url" databricks_token = "your-token-value"
二、跨文件传递工作区URL和Token
场景1:同一配置目录下的不同文件
- 在工作区创建的配置中添加
outputs.tf,输出URL和Token:
output "databricks_workspace_url" { type = string value = aws_databricks_workspace.your_workspace.url # 替换为实际工作区资源的URL属性 description = "Databricks工作区URL" } output "databricks_token" { type = string value = aws_databricks_workspace.your_workspace.token # 替换为实际工作区资源的Token属性 description = "Databricks工作区认证Token" sensitive = true }
- 后续创建集群、Notebook等资源时,直接使用已配置好的Provider即可,无需额外传递变量——Provider会自动使用
variables.tf中的值完成认证。
场景2:不同配置目录(多模块/独立部署)
- 工作区部署时启用远程状态存储(如S3),确保状态文件可被其他配置访问:
# 工作区配置的terraform块 terraform { backend "s3" { bucket = "your-terraform-state-bucket" key = "databricks-workspace/terraform.tfstate" region = "us-east-1" } }
- 在后续资源的配置文件中,通过
terraform_remote_state数据源读取工作区输出:
data "terraform_remote_state" "databricks_workspace" { backend = "s3" config = { bucket = "your-terraform-state-bucket" key = "databricks-workspace/terraform.tfstate" region = "us-east-1" } } # 配置Databricks Provider时使用远程状态的输出值 provider "databricks" { host = data.terraform_remote_state.databricks_workspace.outputs.databricks_workspace_url token = data.terraform_remote_state.databricks_workspace.outputs.databricks_token } # 后续创建集群、Notebook等资源即可正常使用该Provider
内容的提问来源于stack exchange,提问作者dheeraj G
相关产品推荐
相关产品推荐

