【发布时间】:2021-02-13 20:41:44
【问题描述】:
我尝试使用 Terraform 的外部数据源检索现有的 EKS 证书指纹,代码如下:
thumbprint.sh
#!/bin/bash
THUMBPRINT=$(echo | openssl s_client -servername oidc.eks.${1}.amazonaws.com -showcerts -connect oidc.eks.${1}.amazonaws.com:443 2>&- | tac | sed -n '/-----END CERTIFICATE-----/,/-----BEGIN CERTIFICATE-----/p; /-----BEGIN CERTIFICATE-----/q' | tac | openssl x509 -fingerprint -noout | sed 's/://g' | awk -F= '{print tolower($2)}')
THUMBPRINT_JSON="{\"thumbprint\": \"${THUMBPRINT}\"}"
echo $THUMBPRINT_JSON
data.tf
data "external" "thumbprint" {
program = ["${path.root}/scripts/thumbprint.sh", data.aws_region.current.name]
}
openid.tf
resource "aws_iam_openid_connect_provider" "openid" {
depends_on = [data.external.thumbprint]
client_id_list = ["sts.amazonaws.com"]
thumbprint_list = [data.external.thumbprint.result.thumbprint]
url = data.aws_eks_cluster.this.identity.0.oidc.0.issuer
}
并使用data.external.thumbprint.result.thumbprint从上述数据源获取指纹。
主要问题是我很困惑,有时我从 thumbprint 获取数据,有时即使我添加了 depends_on,它也会变为 blank 值。我怎样才能解决这个问题?还是有更好的方法?
【问题讨论】:
-
您是否有任何理由不想使用
aws_eks_clusterdata source 来获取此示例中的信息? -
@ydaetskcoR 你能告诉我如何从
aws_eks_cluster数据源获取指纹吗? -
您可以将其与
tls_certificatedata source 结合使用,如示例中所示。 -
@ydaetskcoR 你能发表评论作为答案吗?我会标记为正确答案。
标签: amazon-web-services terraform openid-connect terraform-provider-aws amazon-eks