Исключите заданную строку из заданного списка в terraform

#terraform

Вопрос:

Я хотел бы исключить данную строку из списка строк в terraform

пример: У меня есть следующий источник данных в качестве переменной

 region_list = data.oci_identity_region_subscriptions.region_subscriptions.region_subscriptions.*.region_name
 

Теперь я хотел бы исключить из него регион. Регион «США-Ашберн-1»

исключить («us-ashburn-1») из списка регионов. Есть какие-нибудь мысли о том, как это сделать?

Комментарии:

1. Если какой-либо из приведенных ниже ответов удовлетворил ваш запрос. Я бы отметил этот вопрос как решенный, приняв ответ.

Ответ №1:

Вы можете сделать это, используя цикл for и условие if в terraform.

Пример конфигурации терраформы,

 variable "regions" {
  type    = list
  default = ["us-west-2", "us-west-1", "us-east-2", "us-east-1"]
}

output "excluded" {
  value = [for region in var.regions : region if region != "us-east-1"]
}
 

В приведенной выше конфигурации будет выведен весь регион, кроме США-восток-1.

Подать заявку полностью! Ресурсы: 0 добавлено, 0 изменено, 0 уничтожено.

Выходы:

 excluded = [
  "us-west-2",
  "us-west-1",
  "us-east-2",
]
 

Ответ №2:

Самый простой способ избавиться от а set ценностей в другом set -это использовать setsubtract() :

 locals {
  regions = ["us-west-2", "us-west-1", "us-east-2", "us-ashburn-1"]
}

output "excluded" {
  value = setsubtract(local.regions, ["us-ashburn-1"])
}
 

выходы:

 excluded = [
  "us-east-2",
  "us-west-1",
  "us-west-2",
]
 

если вы хотите сохранить порядок или дубликаты в списке, то предпочтительнее использовать for выражение, как уже упоминалось в другом ответе.