【问题标题】:How to parameterize prevent_destroy lifecycle configuration in Terraform?如何在 Terraform 中参数化 prevent_destroy 生命周期配置?
【发布时间】:2022-01-26 15:22:27
【问题描述】:

我在本地定义了一个变量,称为local.protect,并在variables.tf 中定义了default = truetype = bool。如何避免在 prevent_destroy 参数上使用变量约束?我以为我可以local.ize (例如locals {protect = var.protect}),但这也行不通。

│ Error: Variables not allowed
│ 
│   on main.tf line 105, in resource "aws_eip" "backend_eip":
│  105:     prevent_destroy = local.protect
│ 
│ Variables may not be used here.
╵
╷
│ Error: Unsuitable value type
│ 
│   on main.tf line 105, in resource "aws_eip" "backend_eip":
│  105:     prevent_destroy = local.protect
│ 
│ Unsuitable value: value must be known

main.tf:

resource "aws_eip" "backend_eip" {
  vpc        = true
  depends_on = [module.vpc.igw_id]
  lifecycle {
    prevent_destroy = local.protect # line 105
  }
}

variables.tf:

variable "protect" {
  type = bool
  description = "Whether (true) or not (false) to protect EIP from deletion via `terraform destroy`."
  default = true
}

这里的用例是能够在运行时为一组资源(如五个 EIP)一次性设置此标志。

【问题讨论】:

  • 你不能。 github.com/hashicorp/terraform/issues/22544 此处的最后一条评论包含一个解决方法,但不是一个很好的解决方法。
  • @jordanm 嘘。我应该删除这个还是你想让它成为答案?

标签: amazon-web-services terraform aws-cli terraform-provider-aws


【解决方案1】:

正如@jordanm 所说,

你不能。 github.com/hashicorp/terraform/issues/22544 此处的最后一条评论包含一种解决方法,但不是很好。

【讨论】:

    猜你喜欢
    • 2020-01-25
    • 2021-08-14
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2020-08-10
    • 2023-02-24
    • 2018-08-12
    • 1970-01-01
    相关资源
    最近更新 更多