【问题标题】:Setting a resource block parameter based on a boolean基于布尔值设置资源块参数
【发布时间】:2022-07-27 21:27:03
【问题描述】:

我正在尝试为 Aurora PostgreSQL 创建一个 Terraform 项目,并且如果可能的话,希望定义一个变量是否是无服务器的。例如:

  1. 变量.tf:

    variable \"serverless\" {type = bool}

  2. terraform.tfvars:

    serveless = \"true\"

  3. main.tf(伪代码):

    resource \"aws_rds_cluster\" \"db_cluster\" {
    ...
    
    if var.serveless == true ? 
        serverlessv2_scaling_configuration {
          max_capacity = 16
          min_capacity = 0.5
        }
    : []
    
    

    如果变量为真 - 设置无服务器代码,否则 - 根本不包含它。

  • 您可以将dynamic 块与for_each 一起使用。

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


【解决方案1】:

结合使用for_each [1] 和dynamic [2] 块可能是一个不错的选择。在这种情况下,你会有类似的东西:

resource "aws_rds_cluster" "example" {
  # ... other configuration ...

  dynamic "serverlessv2_scaling_configuration" {
    for_each = var.serveless ? [1] : []
    content {
      max_capacity = var.max_capacity
      min_capacity = var.min_capacity
    }
  }
}

还要注意 Aurora Serverless 的注释:

serverlessv2_scaling_configuration 配置仅在 engine_mode 设置为 provisioned 时有效

因此,在这种情况下,您可能还想使用三元表达式。


[1]https://www.terraform.io/language/meta-arguments/for_each

[2]https://www.terraform.io/language/expressions/dynamic-blocks

【讨论】:

  • 谢谢!除了 engine_mode: instance_class= var.serverless 之外,我还必须适当设置 instance_class ? “db.serverless”:var.instance_class
猜你喜欢
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
  • 2011-12-07
  • 2013-04-23
  • 2014-02-06
相关资源
最近更新 更多