#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…