能否将文件路径作为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
相关产品推荐
相关产品推荐

