有for_each条件的模块组合



在我的根模块上,我声明了两个模块(paired_regions_network和paired_regions_app),它们都迭代一组区域。

module "paired_regions_network" {
source                  = "./modules/network"
application_hostname    = ["${module.paired_regions_app.website_hostname}"]  // THIS IS BREAKING THE CODE
...
for_each = (var.environment == "TEST" || var.environment == "PROD") ? var.paired_regions : { region1 = var.paired_regions.region1 }
}
module "paired_regions_app" {
source                  = "./modules/multi-region"
...
for_each = (var.environment == "TEST" || var.environment == "PROD") ? var.paired_regions : { region1 = var.paired_regions.region1 }
}
output "network_outputs" {
value = module.paired_regions_network
}
output "app_outputs" {
value = module.paired_regions_app
}

迭代区域声明如下:

variable "paired_regions" {
description = "The paired regions"
default = { 
region1 = { 
...
},
region2 = { 
...
}
}
}

我想从paired_regions_network模块访问来自paired_regions_app模块的输出,即website_hostname值,我想将其分配给paired_regions_network模块的application_hostname参数,如上所示。

output "website_hostname" {
value       = azurerm_app_service.was_app.default_site_hostname
description = "The hostname of the website"
}

如何更改下面的行,以便我能够访问其他模块输出的网站主机名?

application_hostname    = ["${module.paired_regions_app.website_hostname}"]
使用上面的代码,我得到这个错误:
│ Error: Unsupported attribute
│
│   on main.tf line 24, in module "paired_regions_network":
│   24:   application_hostname    = ["${module.paired_regions_app.website_hostname}"]
│     ├────────────────
│     │ module.paired_regions_app is object with 2 attributes
│
│ This object does not have an attribute named "website_hostname".

由于您在paired_regions_app中使用for_each,因此您必须通过密钥访问其输出。

application_hostname    = [module.paired_regions_app[each.key].website_hostname]

相关内容

  • 没有找到相关文章

最新更新