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

能否将文件路径作为Terraform变量输入并从中提取项目名?

实现方法

可以实现。Terraform 提供了内置的path.module变量,它会返回当前模块所在的目录路径(比如你的场景中就是/env/nonprod/overlay/prj-npe-02),结合字符串处理函数就能提取出目录名作为项目名称。

具体操作如下:

  • 定义var.project_name变量,通过默认值自动从路径中提取项目名,无需手动传入
  • 使用split()函数将路径按/分割成列表,再用element()函数取列表的最后一个元素,也就是目标项目名

完整代码示例:

# 定义变量,默认值自动从当前模块路径提取项目名
variable "project_name" {
  type        = string
  description = "项目名称,自动从当前模块路径提取"
  default     = element(split("/", path.module), length(split("/", path.module)) - 1)
}

data "google_project" "project" {
  project_id = var.project_name
}

如果你的路径结构固定(项目名始终是path.module的最后一段),上面的代码就能直接生效。测试时可以用terraform console执行element(split("/", path.module), length(split("/", path.module)) - 1),验证是否正确提取出prj-npe-02。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:15:17