首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个值的Terraform AWS SSM参数

具有多个值的Terraform AWS SSM参数
EN

Stack Overflow用户
提问于 2021-03-27 15:36:50
回答 1查看 984关注 0票数 0

我需要在SSM参数存储中存储与同一环境相关的多个值。最佳实践是什么?是否将值与单个参数一起存储?或者将所有内容都存储在一个参数中?

当我单独存储它时,使用下面的terraform代码可以非常直接地获得值。

SSM参数foo

代码语言:javascript
复制
bar
代码语言:javascript
复制
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
  ])
}

输出:

代码语言:javascript
复制
➜  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 value?

SSM参数foo

代码语言:javascript
复制
[
  {
    server1_eth0 = “server_ip1"
    server1_eth1 = “server_ip2"
    server2 = “server2_ip"
    server3 = “server3_ip"
  }
]
EN

回答 1

Stack Overflow用户

发布于 2021-04-03 07:03:55

下面的方法帮助我解决了这个问题。谢谢,@Marcin,@Matt Schuchard

参数值:

代码语言:javascript
复制
"server_ips":
{ 
 "server1":"10.1.21.1",
 "server2":"10.1.22.1", 
 "server3":"10.1.23.1"
}
}

代码是

代码语言:javascript
复制
output "ssm_parameters" {
  value = jsondecode(data.aws_ssm_parameter.ssm_parameters.value)["server_ips"].server3
}

输出为

代码语言:javascript
复制
Outputs:

ssm_parameters = 10.1.23.1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66829058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档