amazon-web-services - terraform 在循环中调用模块
问题描述
是否可以从另一个资源、数据、本地等调用带有 for_each 函数的 terraform 模块?
terraform required_version = ">= 0.15.4"
def.tfvar
name = "app-stage"
project = "stage-xyz"
主文件
source = "../../src/codedeploy"
name = var.name
project = var.project
s3_bucket_arn = var.s3_bucket_arn
environment = var.environment
app_name = module.codedeploy.app_name
输出.tf
output "app_name" {
value = aws_codedeploy_app.app.name
}
这个可行,但如果我想创建几个 codedeploy 那么我必须创建几个 tfvar 文件并应用它们。而不是这样做,我想创建一个 tfvar 文件并在 main.tf 文件中使用 for_each 函数。
abce.tfvar
codeDeploy_records = {
"app-stage= {
project = "stage-xyz",
},
"app-qa= {
project = "qa-xyz",
}
}
主文件
module "codedeploy" {
for_each = var.codeDeploy_records
source = "../../src/codedeploy"
name = each.key
project = each.value.project
app_name = module.codedeploy.app_name
那一个给出了以下错误。此对象没有名为“app_name”的属性。
我们可以从下面调用一个模块吗?
local test {
for_each = var.codeDeploy_records
source = "../../src/codedeploy"
name = each.key
project = each.value.projec
app_name = module.codedeploy.app_name
}
module "codedeploy" {
解决方案
在这种情况下我的解决方案
app_name = module.codedeploy_app[each.key].app_name
推荐阅读
- excel - 从多个 excel 文件的每张表中复制相同的单元格
- sql-server - 用常规序列替换 MSSQL 自动增量标识
- python - API id - 将 id 转换为整数
- xml - 在 XSLT/XPath 中将 xpath xml 元素的联合表示为公共父级的子级
- c# - 序列化和反序列化对象集合
- f# - 如何在 XPlot.GoogleCharts Treemap (F#) 中生成自定义工具提示?
- weather - 如何在 NixOS 中将天气添加到 i3status
- arrays - 意外的数组大小
- core-data - List 中的 ForEach 出现 SwiftUI 错误:无法使用类型为“(@escaping()...)的参数列表调用类型“List”的初始化程序(参见代码)
- c# - 尝试获取数组的第一个元素,然后将其返回给 main 方法