Параметр Terraform AWS SSM с несколькими значениями

Мне нужно сохранить несколько значений, связанных с одной и той же средой, в хранилище параметров SSM. Что было бы лучше всего? Сохранение значений с отдельным параметром? или хранить все в одном параметре?

Когда я сохраняю его индивидуально, довольно просто получить значение, используя следующий код терраформирования.

Параметр SSM foo

bar
data "aws_ssm_parameter" "ssm_parameters" {
  for_each = var.ssm_parameters
  name     = each.key
}

output "ssm_parameters" {
  value = tolist([
    for ssm_parameter in data.aws_ssm_parameter.ssm_parameters : ssm_parameter.value
  ])
}

Вывод:

➜  aws_ssm git:(add/ssm_resources) ✗ terraform apply -var-file="test.tfvars"
data.aws_ssm_parameter.ssm_parameters["foo"]: Refreshing state...

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

ssm_parameters = [
  "bar",
]

Когда я сохраняю все значения в одном параметре. Есть ли способ получить значения на основе определенного ключа? Например, если я сохраню значения примерно так, как показано ниже, есть ли способ получить только значение server2? или server1 eth1 значение?

Параметр SSM foo:

[
  {
    server1_eth0 = “server_ip1"
    server1_eth1 = “server_ip2"
    server2 = “server2_ip"
    server3 = “server3_ip"
  }
]

person Gowthamakanthan Gopal    schedule 27.03.2021    source источник
comment
Ваш секрет - json, поэтому вы разбираете его в TF как таковой. Не уверены, в чем проблема?   -  person Marcin    schedule 27.03.2021
comment
Вы спрашиваете, как получить доступ к парам ключ-значение?   -  person Matt Schuchard    schedule 27.03.2021
comment
Да .. например, как получить значение только для сервера 2 с помощью terraform?   -  person Gowthamakanthan Gopal    schedule 27.03.2021
comment
как получить значение eth1 на сервере 1 с помощью terraform ..   -  person Gowthamakanthan Gopal    schedule 27.03.2021


Ответы (1)


Решить эту проблему мне помог следующий метод. Спасибо, @Marcin, @Matt Schuchard

Значение параметра:

"server_ips":
{ 
 "server1":"10.1.21.1",
 "server2":"10.1.22.1", 
 "server3":"10.1.23.1"
}
}

И код

output "ssm_parameters" {
  value = jsondecode(data.aws_ssm_parameter.ssm_parameters.value)["server_ips"].server3
}

Выход

Outputs:

ssm_parameters = 10.1.23.1
person Gowthamakanthan Gopal    schedule 02.04.2021