You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向databricks_global_init_script资源传递脚本参数值

使用Terraform的databricks_global_init_script传递参数给Datadog初始化脚本

要给Datadog的安装脚本传递DD_API_KEY和DD_ENV参数,你不能直接通过source参数传递变量,需要通过Terraform的文件渲染或内容拼接方式注入参数,下面是两种可行方案:

方案一:用templatefile渲染脚本(推荐,可维护性高)

步骤1:修改初始化脚本,添加变量占位符

打开你的datadog-install-driver-workers.sh脚本,在需要用到参数的位置替换为占位符(比如脚本开头添加环境变量导出):

# 脚本开头添加参数注入
export DD_API_KEY="${dd_api_key}"
export DD_ENV="${dd_env}"

# 原脚本内容...

步骤2:在Terraform资源中使用templatefile渲染内容

替换source参数为content,通过templatefile读取脚本并传入变量:

resource "databricks_global_init_script" "init1" {
  name    = "my init script"
  content = templatefile("${path.module}/datadog-install-driver-workers.sh", {
    dd_api_key = var.datadog_api_key
    dd_env     = var.datadog_env
  })
}

步骤3:定义Terraform变量

在variables.tf中声明所需变量,注意标记敏感信息:

variable "datadog_api_key" {
  type      = string
  sensitive = true # 避免密钥在Terraform输出中泄露
}

variable "datadog_env" {
  type    = string
  default = "production" # 可根据需求设置默认值
}

方案二:直接拼接环境变量与脚本内容(无需修改原脚本)

如果不想改动原脚本,可以在content中先导出环境变量,再拼接原脚本内容:

resource "databricks_global_init_script" "init1" {
  name    = "my init script"
  content = <<EOF
export DD_API_KEY="${var.datadog_api_key}"
export DD_ENV="${var.datadog_env}"
$(file("${path.module}/datadog-install-driver-workers.sh"))
EOF
}

这种方式会在原脚本执行前先设置好环境变量,原脚本可以直接读取DD_API_KEY和DD_ENV这两个环境变量。

注意事项

  • DD_API_KEY属于敏感数据,务必用sensitive = true标记变量,防止泄露。
  • 确保Databricks集群的权限允许执行初始化脚本,脚本本身的执行权限Terraform会通过内容传递自动处理,无需本地额外设置。

内容的提问来源于stack exchange,提问作者raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:12:20