繁体   English   中英

从 terraform output 中提取数据以在 Secrets Manager 中使用

[英]Extract data from terraform output to use in Secrets Manager

我有一个构建 MSK 集群的 terraform 脚本,我已经输出了 zookeeper 和代理信息,我想将此数据添加到 AWS 密钥的管理器密钥中。

问题是它们是逗号分隔的。

这是管道中的 output

 ~ zookeeper_connect_string = "z-1.example-loadtesting.qukw3u.c2.kafka.eu-west-1.amazonaws.com:2181,z-2.example-loadtesting.qukw3u.c2.kafka.eu-west-1.amazonaws.com:2181,z-3.example-loadtesting.qukw3u.c2.kafka.eu-west-1.amazonaws.com:2181

这是秘密经理的地形。

resource "aws_secretsmanager_secret_version" "connection" {
  secret_id = aws_secretsmanager_secret.kafka.id
  secret_string = jsonencode({
  "bootstrap_brokers_tls_1": aws_msk_cluster.example.bootstrap_brokers_tls,
  "bootstrap_brokers_tls_2": aws_msk_cluster.example.bootstrap_brokers_tls,
  "zookeeper_connect_string_1": aws_msk_cluster.example.zookeeper_connect_string,
  "zookeeper_connect_string_2":aws_msk_cluster.example.zookeeper_connect_string,
  })
}

有没有办法使用 terraform 索引或其他方法来使用这些数据?

谢谢

Output

output "zookeeper_connect_string_0" {
  value = element(split(",", aws_msk_cluster.example.zookeeper_connect_string),0)
}
 output "zookeeper_connect_string1_1" {
   value = element(split(",", aws_msk_cluster.example.zookeeper_connect_string),1)
 }

您可以使用索引来引用每个项目。 此处split function 会将字符串拆分为list(string)[0]将获得第一个索引值。

split(",", aws_msk_cluster.example.bootstrap_brokers_tls)[0]

或者做这样的事情,其中保存到秘密管理器的 JSON 字符串包含每个键下的值列表。

resource "aws_secretsmanager_secret_version" "connection" {
  secret_id = aws_secretsmanager_secret.kafka.id

  secret_string = jsonencode({
    bootstrap_brokers_tls = split(",", aws_msk_cluster.example.bootstrap_brokers_tls)

    zookeeper_connect_string = split(",", aws_msk_cluster.example.zookeeper_connect_string)
  })
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM