![](/img/trans.png)
[英]Terraform picks up secrets value from AWS secrets manager in wrong format
[英]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.