如何向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
相关产品推荐
相关产品推荐

