【问题标题】:How to solve resource region dependency issue in Terraform如何解决 Terraform 中的资源区域依赖问题
【发布时间】:2021-10-24 22:35:04
【问题描述】:

例如:我有两个独立的模块,module-us-east-1、module-us-west-2。现在运行的连续性是 module-us-east-1 然后 module-us-west-2 在同一个 Jenkins 管道中。但是 module-us-east-1 需要一些资源,这些资源将由 module-us-west-2 创建,显然两个模块都会在不同的区域创建资源。

关于如何实现这一点的任何提示? :/

【问题讨论】:

  • 这听起来很复杂。您能否提供一个minimal reproducible example 来说明您正在尝试做的事情以及问题所在?很可能有一些好的答案(我跳出来的两个要么是拆分执行,所以你不会一次性应用所有东西并减少爆炸半径和复杂性,或者可能在模块之间传递依赖引用)但它是很难从这些小信息中准确说出您需要什么。

标签: jenkins terraform terraform-provider-aws terraform0.12+


【解决方案1】:

使用aws_region data resource。它将拉入您正在运行的当前区域,因此您可以对两者使用相同的模块。

data "aws_region" "current" {}

然后您可以在需要时在区域中进行模板:

"arn:aws:logs:${data.aws_region.current.name}:1234567890:log-group:*"

编辑:

您需要四个模块。两个模块,每个区域一个相互依赖,是一个循环依赖图,会中断。

将模块拆分为共享资源和私有资源,为每个资源创建一个共享模块和私有模块。然后使用数据资源导入 共享资源到私有模块中。

【讨论】:

  • 这没有回答“module-us-east-1 将需要一些资源,这些资源将由 module-us-west-2”部分创建。
  • @Grzegorz Oledzki 看起来问题比看起来更复杂。已编辑。
  • 是的,你是对的。任务有点棘手。
  • @setup 您还可以使用output terraform.io/docs/language/values/outputs.html 将在一个模块中创建的资源传递给另一个模块。这样就会产生一些依赖。
  • 长短篇/故事,为了解决这个问题,我将每个资源创建在不同的独立模块中彼此分开。
猜你喜欢
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 2015-09-27
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
相关资源
最近更新 更多