#terraform
#терраформирование
Вопрос:
Я пытаюсь отфильтровать список местоположений Azure, чтобы выбрать основные; основное местоположение в этом смысле является первым местоположением пары регионов, которая находится в списке, например, задан список [ 'westeurope', 'northeurope' ]
, которым должен быть результирующий список [ 'westeurope' ]
.
Поэтому, чтобы решить эту проблему в общем случае, мне нужно посмотреть на частично сгенерированный новый список, чтобы увидеть, присутствует ли уже пара текущего значения, и я не могу придумать синтаксис/метод, который работает.
Единственный хак, который у меня есть, — это что-то вроде этого…
locals { pairs = { # Europe northeurope = "westeurope" westeurope = "northeurope" # UK uksouth = "ukwest" ukwest = "uksouth" # Plus lots more ignored for brevity } # Just filter even indicies primaries = [ for x, index in var.locations : x if index / 2 = 0 ] }
Но для этого требуется, чтобы элементы находились в правильном порядке, т. е. работали [ 'westeurope', 'northeurope', 'uksouth', 'ukwest' ]
бы, но давали неверный ответ для [ 'westeurope', 'uksouth', 'northeurope', 'ukwest' ]
Вот таблица, показывающая различные местоположения и ожидаемые результаты для различных сценариев…
вар.местоположения | первичный |
---|---|
[ «вестеуроп» ] | [ «вестеуроп» ] |
[ «северная Европа»] | [ «северная Европа»] |
[ «западная Европа», «северная Европа»] | [ «вестеуроп» ] |
[ «северная Европа», «западная Европа»] | [ «северная Европа»] |
[ «западная Европа», «уксаут», «северная Европа»] | [ «вестеуроп», «уксаут» ] |
[ «западная Европа», «северная Европа», «уксаут» ] | [ «вестеуроп», «уксаут» ] |
Комментарии:
1. Можете ли вы показать, что такое
var.locations
… из вашего вопроса все, что вам нужно, это чтобы первый элемент в массивеvar.locations[0]
делал именно это (при условии, что var.locations является массивом)2. возможно, добавьте несколько разных входных данных и ожидаемый результат