Объединение/слияние 2 json в зависимости от условия в Terraform

#terraform

#terraform

Вопрос:

У меня есть 2 файла json, в одном у меня есть политики, а в другом у меня есть кластеры с пользовательскими конфигурациями, дело в том, что если у кластера есть ключ policy_id, его следует объединить/объединить с соответствующей политикой, чтобы получить конфигурации по умолчанию, если не просто возвращает базовый кластер.

кластер.json

 [  {  "name": "a",  "memory": 16  },  {  "name":"b",  "memory": 16,  "policy_id": 2  } ]   

политика.json

 [  {  "policy_id": 1,  "policy_name": "test",  "policy_cores" : 4  },  {  "policy_id": 2,  "policy_name": "test2",  "policy_cores" : 8  } ]  

Таким образом, ожидаемый результат должен быть примерно таким: кластер «a» остается прежним, потому что у него нет ключа policy_id, кластер «b» имеет свои значения и значения политики:

 [  {  "name": "a",  "memory": 16  },  {  "name":"b",  "memory": 16,  "policy_id": 2,  "policy_name": "test2",  "policy_cores" : 8  } ]  

Я пытался сделать это в коде блока locals, но я не знаю, как я могу сделать вложенные циклы for с условным. Извините за псевдокод, я пишу на Python, поэтому терраформирование для меня такая редкость.

 locals {  # get jsons  policies = jsondecode(file("${path.module}/policies.json"))  clusters = jsondecode(file("${path.module}/clusters.json"))   #pseudo-code to express the logic, sorry im still learning Terraform  aux_clusters = [  for cluster in local.clusters : {  if try(cluster.policy_id, null) != null : {  #if policy_id key exists, then merge with the respective policy  for k, v in local.policies : {  k =gt; merge(v, cluster) if v.policy_id == cluster.policy_id  }  } else {  #if policy_id key doesnt exist just return the base cluster  cluster  }  }  ] }  

Thank you…