如何在Terraform中获取调用模块的名称

Dov*_*fen 2 terraform

如何从子模块中访问父/调用模块的名称。
或者,如何从子模块中获取调用模块的文件名?

例如

module "test_parent_module" {
    source = "./child_module"
}
Run Code Online (Sandbox Code Playgroud)
module "child_module" {
    locals {
        // What could I use here to get parent module name?
        parent_module_name = module.parent # Should output "test_parent_module"
        // What could I use here to get the parent module's file name?
        parent_file_name = module.parent.filename # Should output "test_parent_module.tf"
    }

}
Run Code Online (Sandbox Code Playgroud)

谢谢

val*_*lem 5

你不能。这种类型的继承层次结构不适用于 terraform。我建议改为传递变量。(尽管如果您依赖 terraform 文件名,您的配置中似乎还存在其他问题,因此您可能需要重新检查您的代码结构)

module "test_A_module" {} // what you had as parent
Run Code Online (Sandbox Code Playgroud)
module "test_B_module" {
    source = "./child_module"

    module_name = "test_A_module"
    file_name = "test_A_module.tf"
}
Run Code Online (Sandbox Code Playgroud)
module "child_module" {
    locals {
        module_name = var.module_name
        file_name = var.file_name
    }

}
Run Code Online (Sandbox Code Playgroud)