Terraform 无法重新创建/删除模块中的资源,因为依赖模块通过 terraform_remote_state 使用它们?

问题描述 投票:0回答:1

我有两个 Terraform 模块 -

X
Y
- 其中
Y
取决于
X
通过
terraform_remote_state
数据源。

X
自然会在管道中的
Y
之前部署,这意味着只要
X
发生更改导致资源被重新创建或删除,管道就会失败。在这种情况下,无法删除
X
中的资源,因为它已被
Y
中的某些资源使用。

这个问题一般是如何解决的?我认为首先使用

terraform_remote_state
是一种反模式?

terraform gitlab pipeline cd
1个回答
0
投票

将基础设施声明拆分为可独立应用的不同配置时,仔细选择划分点非常重要,以便不同的配置真正可独立应用。 Terraform 一次仅适用于一种配置,因此它无法自动解决需要同时更改两种不同配置的更改。

这本质上并不是

terraform_remote_state

 的问题——使用 
data
 块依赖于其他地方管理的对象时可能会出现同样的问题。这里的根本问题似乎是 Y 被声明为管理实际上可能应该由 X 管理的东西,因为它需要立即更改以响应 X 中的其他更改。

具体如何解决这个问题将取决于您在实践中使用的基础设施对象。重新组织哪些对象由哪些配置管理可能会解决问题,但也可能会引入另一个类似的问题。有时,成功地将基础设施拆分为两个独立的单元需要不同的设计方法,例如X 和 Y 都依赖某个第三个单元,它为 X 和 Y 成功协作提供了某种方式。

如果您提出一个新问题,并准确命名您正在使用的资源类型并共享您的配置,那么您可能会得到更可行的答案。

© www.soinside.com 2019 - 2024. All rights reserved.