azure - 带有 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
我想分配给模块application_hostname
参数的值paired_regions_network
,如上所示。
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".
解决方案
由于您正在使用for_each
in ,paired_regions_app
因此您必须按键访问其输出。
application_hostname = [module.paired_regions_app[each.key].website_hostname]
推荐阅读
- python - Udacity CS101:不确定这个嵌套字典问题是错误还是我遗漏了什么
- date - 减去 3 个月到 yyyymm 月份格式列 hive sql
- bash - 尝试根据 CWD 更改 bash 提示的颜色。更改目录后无法更新
- r - 基于 2 个条件的行值的条件减法
- python - 如何定期重复一个函数,直到在 Django 的后台成功?
- git - git pull 对文件名太长不起作用
- docker - 使用远程 docker 容器中的 vs 代码调试 webpack 开发服务器
- java - 通过 Java JDBC 从 Azure VM 连接 Azure SQL 数据库问题
- performance - 指数 vs 均匀 vs 精确平均响应时间
- javascript - 在父组件中测试子组件的按钮