我正在使用terraform在AWS中创建许多elasticsearch集群。每个集群可以有不同数量的实例。如果有一个实例 - 应该有一个可用区。如果有两个实例 - 应该有两个可用区。如果我的地形aws_elasticsearch_domain资源中有一个实例,则zone_awareness_enabled设置为 false。问题是zone_awareness_config并没有像我认为的那样被忽略。因此,如果我有两个可用区 - 我需要将zone_awareness_config添加到 tf 文件中。我必须管理两个文件。
这是cluster_config:
cluster_config {
instance_type = "c5.large.elasticsearch"
instance_count = var.es_instance_count
dedicated_master_enabled = var.dedicated_master_enabled
dedicated_master_count = var.es_instance_count
zone_awareness_enabled = var.es_instance_count > 1 ? true : false
zone_awareness_config {
availability_zone_count = var.es_instance_count
}
}
cluster_config应该适用于 2 或 3 个实例,也适用于 1 个可用区中的 1 个实例。但事实并非如此。如果我有 1 个可用区 - 我必须从文件中删除zone_awareness_config。 如果我有 1 个可用区,如何忽略zone_awareness_config?
您可以尝试创建一个动态块,以仅在实例计数大于 1 时添加zone_awareness_config块
dynamic "zone_awareness_config" {
for_each = var.es_instance_count > 1 ? [var.es_instance_count] : []
content {
availability_zone_count = var.es_instance_count
}
}
此示例未使用 for_each 循环中设置的值。它真的应该是:
content {
availability_zone_count = zone_awareness_config.value
}