#terraform #resources
Вопрос:
Массив:
regions = [ {name: "region1"}, {name: "region2"}, {name: "region3"}, {name: "region4"}, {name: "region5"}, {name: "region6"}]
Json:
{ "region1" : ["cluster1"], "region2" : [], "region3" : ["cluster1"], "region4" : ["cluster1","cluster2"] } resource "type" "name" { count = length(regionLength) name = "region-name/cluster-name" }
Мне нужен ресурс, созданный с таким выводом имени, как этот
- регион 1/кластер 1
- регион2
- регион3/кластер1
- регион4/кластер1
- регион4/кластер2
Можем ли мы достичь и этого: Финал = []
For r , cs in arr: for oc in regions: if r == oc.name: for c in cs: oc[‘cluster’] = r-c Final.push(oc)
Заранее спасибо.
Комментарии:
1. Я также заметил, что почти на все ваши вопросы есть ответы, но ни один из них не принят. Принятие хороших ответов-это не только хорошая практика, но и уменьшает количество дубликатов и увеличивает шансы на то, что на ваши вопросы действительно будут даны ответы.
2. Каждый вопрос уникален. Это просто перспектива. Я последовал остальной части решения с ответом, и хотя я не знаю, как его принять. Однако несколько ответов были действительно отличными, и они сработали для меня.
3. Я бы предложил пересмотреть эти ответы и принять их. Для этого вы нажимаете кнопку «галочка» под кнопками голосования вверх/вниз. Также ваш текущий вопрос не ясен.
4. Хорошо. Понял
Ответ №1:
Вы можете добиться этого следующим образом:
variable "regions" { default = { "region1" : ["cluster1"], "region2" : [], "region3" : ["cluster1"], "region4" : ["cluster1","cluster2"] } } locals { region_list = flatten([for region, clusters in var.regions: [ for cluster in coalescelist(clusters, [""]): "${region}/${cluster}" ] ]) }
что дает:
region_list = [ "region1/cluster1", "region2/", "region3/cluster1", "region4/cluster1", "region4/cluster2", ]
Комментарии:
1. Это сработало для меня. Спасибо
2. Еще одно дополнение к вышеупомянутому вопросу @Marcin: Я добавляю вопрос. дайте мне знать вашу идею
3. @Himani, пожалуйста, сделайте новый вопрос для нового выпуска. Также, пожалуйста, примите ответ, если это помогло.
4. Я уже согласился.
5. @Химани Спасибо. Но чтобы принять, вам нужно нажать кнопку «галочка» под кнопками голосования вверх/вниз в ответе.