Я хочу использовать имя проекта из пути в качестве входных данных для main.tf. Например, у меня есть путь к файлу следующим образом
/env/nonprod/overlay/prj-npe-02/main.tf
и в моем main.tf можно ли взять входное имя var.project_name из пути к файлу, который равен «../prj-npe-02/..»
main.tf
data "google_project" "project" {
project_id = var.project_name
}
Это должно быть возможно с помощью функции split и abspath. https://developer.hashicorp.com/terraform/language/functions/splithttps://developer.hashicorp.com/terraform/language/functions/abspath
locals {
absolute_path = abspath(path.root)
project_id = split("/", local.absolute_path)[3]
}
output "name" {
value = local.project_id
}
Только что протестировано на моем конце и работает как шарм.
Если вы хотите адаптировать под свой ресурс, он должен выглядеть так.
data "google_project" "project" {
project_id = local.project_id
}
похоже на ответ Ханнеса, но я использовал регулярное выражение, чтобы найти решение
data "google_project" "project" {
project_id = regex( "prj-[^\/]+", abspath(path.root))
}