Terraform `lifecycle` 模块的替代品

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

我有一个 Terraform 文件,我想阻止任何人在其上运行

terraform destroy

执行此操作的正常方法是将包含

lifecycle
prevent_destroy = true
块包含在文件中的一个或多个资源上。但是,我不能这样做。该文件仅包含
module
不接受
lifecycle

我考虑修改模块本身以包含可以使用参数配置的

lifecycle
块。但这也不起作用,因为该块仅接受文字值,而不接受变量。

另一种替代方法是向接受

lifecycle
块的文件添加一个不执行任何操作的资源。我想这是什么资源并不重要?任何包含设置了
prevent_destroy
的块的资源都应该足以停止 destroy 命令。对吗?

那么,对于我来说除了持有这个区块之外什么也不做的最经济的资源类型是什么?理想情况下,不会产生额外的云提供商成本或安全风险。

提供商是Cloud Foundry。 Terraform 版本是 1.7.5。

terraform cloud-foundry infrastructure-as-code terraform-modules
1个回答
0
投票

我认为您可以使用此处的“无所事事”资源。

  1. 选择一个占位符:Terraform 提供了一些资源,基本上可以满足您的需求。您有两个选择:
  • null_resource
    :这就像一张空白记事卡,专为您只需要填充空间的情况而设计。

  • local_value
    :尽管它的目的是定义本地值,但它也可以在紧要关头充当无用的资源。

添加资源和生命周期块:

在您的主 Terraform 文件(包含模块的文件)中,使用

prevent_destroy = true
:

添加您选择的资源和生命周期块
resource "null_resource" "prevent_destroy" {

  lifecycle {
    prevent_destroy = true
  }
}

这段代码只是定义了一个名为

null_resource
prevent_destroy
并告诉 Terraform 在有人尝试运行
terraform destroy
时避免这种情况。

希望这有帮助!

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