【问题标题】:In terraform, how do you sort a list of objects and grab the last value?在 terraform 中,如何对对象列表进行排序并获取最后一个值?
【发布时间】:2022-10-21 20:25:00
【问题描述】:

给出以下不保证顺序的对象列表。如何使用 terraform 对列表进行排序并获取最新值?

locals {
  list_of_objects = [
    {
      name                    = "0.25388.50855"
      sort_versions_by_semver = false
      tags = {
        "baseosimg" = "windows2022datacenter"
      }
    },
    {
      name                    = "0.25424.21095"
      sort_versions_by_semver = false
      tags = {
        "baseosimg" = "windows2022datacenter"
      }
    },
    {
      name                    = "0.25399.6325"
      sort_versions_by_semver = false
      tags = {
        "baseosimg" = "windows2022datacenter"
      }
    },
  ]
}

【问题讨论】:

    标签: terraform


    【解决方案1】:

    在 terraform 中,如果您将对象列表转换为地图,它会自动对其进行排序。从那里您可以获取最后一个值(或第一个值)。

    locals {
      map_of_sorted_objects = { for a in local.list_of_objects : a.name => a }
      last_value          = length(local.map_of_sorted_objects) - 1
      keys                  = keys(local.map_of_sorted_objects)
      last                  = element(local.keys, local.last_value)
    
    }
    
    output "test" {
      value = lookup(
        local.map_of_sorted_objects,
        element(
          local.keys,
          local.last_value
        )
      )
    }
    

    输出

    test = {
      "name" = "0.25424.21095"
      "sort_versions_by_semver" = false
      "tags" = {
        "baseosimg" = "windows2022datacenter"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2013-09-02
      相关资源
      最近更新 更多