【问题标题】:how to sort Data Sources in terraform based on arguments如何根据参数对 terraform 中的数据源进行排序
【发布时间】:2020-01-17 21:20:26
【问题描述】:

我使用以下 terraform 代码来获取可用数据库资源的列表:

data "alicloud_db_instance_classes" "resources" {
  instance_charge_type = "PostPaid"
  engine               = "PostgreSQL"
  engine_version       = "10.0"
  category = "HighAvailability"
  zone_id = "${data.alicloud_zones.rds_zones.ids.0}"
  multi_zone = true
  output_file = "./classes.txt"
}

输出文件如下所示:

[
    {
        "instance_class": "pg.x4.large.2",
        "storage_range": {
            "max": "500",
            "min": "250",
            "step": "250"
        },
        "zone_ids": [
            {
                "id": "cn-shanghai-MAZ1(b,c)",
                "sub_zone_ids": [
                    "cn-shanghai-b",
                    "cn-shanghai-c"
                ]
            }
        ]
    },
    {
        "instance_class": "pg.x8.medium.2",
        "storage_range": {
            "max": "250",
            "min": "250",
            "step": "0"
        },
        "zone_ids": [
            {
                "id": "cn-shanghai-MAZ1(b,c)",
                "sub_zone_ids": [
                    "cn-shanghai-b",
                    "cn-shanghai-c"
                ]
            }
        ]
    },
    {
        "instance_class": "rds.pg.c1.xlarge",
        "storage_range": {
            "max": "2000",
            "min": "5",
            "step": "5"
        },
        "zone_ids": [
            {
                "id": "cn-shanghai-MAZ1(b,c)",
                "sub_zone_ids": [
                    "cn-shanghai-b",
                    "cn-shanghai-c"
                ]
            }
        ]
    },
    {
        "instance_class": "rds.pg.s1.small",
        "storage_range": {
            "max": "2000",
            "min": "5",
            "step": "5"
        },
        "zone_ids": [
            {
                "id": "cn-shanghai-MAZ1(b,c)",
                "sub_zone_ids": [
                    "cn-shanghai-b",
                    "cn-shanghai-c"
                ]
            }
        ]
    }
]

我想买最便宜的。

一种方法是使用 storage-range.min 进行排序,但是如何根据 'storage_range.min' 对这个列表进行排序呢?

或者我可以按“instance_class”过滤,但“alicloud_db_instance_classes”似乎不喜欢过滤器,因为它说:错误:data.alicloud_db_instance_classes.resources::无效或未知键:过滤器

有什么想法吗?

【问题讨论】:

    标签: sorting terraform alibaba-cloud


    【解决方案1】:

    sort() 函数按字典顺序排列,这里没有简单的键。 您可以使用类似这样的代码进行过滤(v0.12)

    locals {
      best_db_instance_class_key = "rds.pg.s1.small"
      best_db_instance_class = element( alicloud_db_instance_classes.resources, index(alicloud_db_instance_classes.resources.*.instance_class, best_db_instance_class_key) )
    }
    

    (未经测试的代码)

    【讨论】:

      猜你喜欢
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      相关资源
      最近更新 更多