【问题标题】:Terraform RDS DB parameter lookup functionTerraform RDS DB 参数查找功能
【发布时间】:2022-01-16 14:57:57
【问题描述】:

以下 Terraform lookup 方法不起作用。它总是呈现默认值“立即”。

 resource "aws_db_parameter_group" "postgres" {
  name   = var.db_parameter_group_name
  family = "postgres11"

  dynamic "parameter" {
    for_each = var.db_parameters
    content {
      name         = parameter.value.name
      value        = parameter.value.value
      apply_method = lookup(parameter.value, "apply_method", null)
    }
  }
}

例如:这是我传递的参数映射

      parameters = [
    {
      name  = "rds.logical_replication"
      value = 1
    }
  ]

输出是:

parameter {
      + apply_method = "immediate"
      + name         = "rds.logical_replication"
      + value        = "1"
    }

rds.logical_replicationstatic 参数,在运行时无法修改,需要重启数据库,因此预期值应为pending-reboot

【问题讨论】:

    标签: amazon-rds terraform-provider-aws


    【解决方案1】:

    我将变量 parameterslist of objects 更新为 map of objects 并传递了 apply_method 例如:-

    variable "parameters" {
        description = "A list of Postgres DB parameter"
        type = list(object({
            name         = string
            value        = string
            apply_method = string
        }))
        validation {
            condition = length([
              for parameter in var.parameters : true
                if contains(["immediate", "pending-reboot"], parameter.apply_method)
            ]) == length(var.parameters)
            error_message = "Parameter apply_method can only be immediate or pending-reboot."
        }
      }
    

    添加了动态块来应用这些参数

      dynamic "parameter" {
        for_each = var.db_parameters
        content {
          name         = parameter.value.name
          value        = parameter.value.value
          apply_method = parameter.value.apply_method
        }
      }
    

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 2020-09-21
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      相关资源
      最近更新 更多