我正在创建一些
policies
,并且 policies
位于 my_pol
目录中。
resource "vault_policy" "rules" {
for_each = fileset("${path.module}/my_pol", "*.hcl")
name = trimsuffix(each.key, ".hcl")
policy = file("my_pol/${each.key}")
}
我里面有几个警察
my_pol
dir
my_pol
-> pol1.hcl
-> pol2.hcl
如何在模块内调用
pol2.hcl
?
module "my_module" {
source = "./dir/something"
policy_two = vault_rules.rules[each.value."pol2.hcl"] <- Here I want policy2.hcl
}
vault_policy.rules[each.value."pol2.hcl"]
这样正确吗?
编辑:
给定值不适合在 ../../variables.tf:36,1-24 声明的 module.my_module.module.my_resources.var.policy_two:需要字符串。
建议的代码在很多层面上都是错误的:
locals {
all_policies = toset(fileset("${path.module}/my_pol", "*.hcl"))
}
然后您可以迭代此列表并传递模块的文件名称:
module "my_module" {
for_each = local.policy_files
source = "./dir/something"
policy = file("${path.module}/my_pol/${each.value}")
}
请注意,第二个选项仅在您尝试创建模块的多个实例时才有效,否则您只需传递文件名即可。