【发布时间】:2019-01-12 02:12:42
【问题描述】:
我们如何确保第一个模块“frontend_1”在其他模块之前执行?
module "frontend_1" {
source = "/modules/frontend-app"
}
module "frontend_2" {
source = "/modules/frontend-app"
}
module "frontend_3" {
source = "/modules/frontend-app"
}
另外 - 记录了几个关于这个问题的 Gitissues,但其中任何一个都没有提供好的解决方法。作为一个开始 - 你可以检查这个,这样你就可以熟悉我的问题的本质 - https://github.com/hashicorp/terraform/issues/10462
以及如何在模块执行之前为模块资源构建一个外部资源 - 如果它依赖于从此类外部资源计算的值,则可以计算“计数”? 例如 - 如果您需要在模块的“计数”中使用新创建的 VPC 的 ID,该模块在该 VPC 中创建多个 AWS 安全组?
【问题讨论】:
-
希望我的回答能回答您的问题。但也许你描述得更多,你真正想要达到的目标感觉有点不寻常。
-
它没有。它实际上是非常需要的——如果你使用一个模块创建一个资源,然后使用同一个模块创建另一个资源,但第二个资源需要第一个资源的 ID ......不可能在第二个资源中获取并使用它.
-
我已经删除了关于模块的明显但不存在的
depends_on的答案。似乎我再次过度简化了 terraform ;-) -
将一个模块的输出传递给另一个模块的变量,不是吗?或者什么代码“需要第一个资源的ID”?数据资源?
-
由于某种原因,它在我的情况下不起作用 - 我正在尝试将由模块创建的 AWS 安全组的 ID 传递给创建第二个 SG 的同一模块的另一个初始化它在其源入口规则中使用第一个 SG 的 ID。
标签: amazon-web-services terraform