【问题标题】:Terraform dynamic block content in conditional way以条件方式对动态块内容进行 Terraform
【发布时间】:2021-07-06 08:34:37
【问题描述】:

我有这个terraform 动态块如下:

  dynamic "backend_http_settings" {
    for_each = var.backend_http_settings
    content {
      name                                = lookup(backend_http_settings.value, "name")
      port                                = lookup(backend_http_settings.value, "port")
      protocol                            = lookup(backend_http_settings.value, "protocol")
      cookie_based_affinity               = lookup(backend_http_settings.value, "cookie_based_affinity")
      probe_name                          = lookup(backend_http_settings.value, "probe_name")
      trusted_root_certificate_names      = [lookup(backend_http_settings.value, "trusted_root_certificate_names"), null]
      pick_host_name_from_backend_address = lookup(backend_http_settings.value, "pick_host_name_from_backend_address")
      request_timeout                     = lookup(backend_http_settings.value, "request_timeout")
    }
  }

var.backend_http_settings 的值如下:

backend_http_settings = [
  {
    name                                = "apimPoolGatewaySetting"
    port                                = 443
    protocol                            = "Https"
    cookie_based_affinity               = "Disabled"
    probe_name                          = "apimgatewayprobe"
    trusted_root_certificate_names      = "whitelistcert1"
    pick_host_name_from_backend_address = true
    request_timeout                     = 180
  },
  {
    name                                = "vm"
    port                                = 80
    protocol                            = "Http"
    cookie_based_affinity               = "Disabled"
    probe_name                          = "vm"
    pick_host_name_from_backend_address = true
    request_timeout                     = 180
  }  
]

但是看看trusted_root_certificate_names,在第二个块中,它没有那个值。那么我如何在content 内有条件地渲染(删除或添加)trusted_root_certificate_names

因为我不能将 null 作为值传递,因为它不会将其视为 null。那么我该怎么做呢?

【问题讨论】:

  • 您要创建哪个资源?这是 AWS Apigateway 吗?
  • 进展如何?问题仍然存在?

标签: terraform


【解决方案1】:

由于trusted_root_certificate_names 是列表,您可以按如下方式将其删除:

 trusted_root_certificate_names      = lookup(backend_http_settings.value, "trusted_root_certificate_names", null) != null ? [backend_http_settings.value["trusted_root_certificate_names"]] : null 

【讨论】:

    猜你喜欢
    • 2020-10-12
    • 1970-01-01
    • 2021-08-11
    • 2021-12-18
    • 2022-01-14
    • 2021-11-28
    • 1970-01-01
    • 2022-01-20
    • 2012-06-17
    相关资源
    最近更新 更多