es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

terraform para agregar valores de consul_key en json

Tengo un proyecto en el cual tengo que utilizar Terraform y al final del Terraform, necesito añadir los valores de las claves de Consul en un /path. Tengo lo siguiente:

resource "consul_keys" "write" {
  datacenter = "dc1"
  token = "xxxx-x-x---xxxxxx--xx-x-x-x"
  key {
    path = "path/to/name"
    value = jsonencode([
      {
        cluster_name = "test", "region" : "us-east1" 
      },
    {
            cluster_name = "test2", "region" : "us-central1" 
        }
    ])
  }
}

Pero si ejecuto Terraform nuevamente con nuevos valores, borrará todos los valores anteriores y actualizará los nuevos valores.

¿Hay alguna forma de seguir añadiendo los valores manteniendo los valores anteriores tal como están?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar la función “hcl” para recuperar los valores existentes de Consul y luego agregar los nuevos valores a él. Aquí tienes un ejemplo de cómo lograr esto:

    locals {
      existing_values = jsondecode(data.consul_key.existing_values.value)
    }
    
    resource "consul_keys" "write" {
      datacenter = "dc1"
      token = "xxxx-x-x---xxxxxx--xx-x-x-x"
    
      key {
        path  = "path/to/name"
        value = jsonencode(append(local.existing_values, [
          {
            cluster_name = "test3", "region": "us-west1"
          }
        ]))
      }
    }
    
    data "consul_key" "existing_values" {
      key {
        path = "path/to/name"
      }
    }
    

    En este ejemplo, recuperamos los valores existentes de Consul utilizando el recurso “data” y los guardamos en una variable local. Luego usamos la función “local” para agregar los nuevos valores a los valores existentes y pasarlos al recurso “consul_keys”. Esto asegurará que los valores existentes se mantengan intactos y se agreguen nuevos valores a ellos.

Comments are closed.