在我的根模块上,我声明了两个模块(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]