この記事はterraform Advent Calendar 2020の19日目です。
TL; DR
Terraformのaws_iam_openid_connect_providerリソースのthumbprint_listに自動で値を入れたい
EKSで IAM roles for service accounts機能(PodにIAMロールを割り当てる機能)を使おうと思って、OIDC ID プロバイダーをTerraformのaws_iam_openid_connect_providerリソースを使って作成しようと思った。
しかしaws_iam_openid_connect_providerリソースのthumbprint_listは必須項目でこれをどうやって自動で入れればいいか調べてみると、
手動で値を取得する方法やshellを用いて自動的に値を入れる方法などが見つかったが、もっとスマートなやり方が見つかった。
それが、tls_certificateリソースを使うを方法だ。
使い方は簡単で以下のようにすればよい。
resource "aws_eks_cluster" "my_cluster" {
name = "my_cluster"
}
data "tls_certificate" "my_certificate" {
url = aws_eks_cluster.example.identity.0.oidc.0.issuer
}
resource "aws_iam_openid_connect_provider" "my_openid_connect_provider" {
client_id_list = ["sts.amazonaws.com"]
thumbprint_list = [data.tls_certificate.my_certificate.certificates.0.sha1_fingerprint]
url = aws_eks_cluster.my_cluster.identity.0.oidc.0.issuer
}
注意点としては、以下のような問題がありterraform planすると毎回idに差分がでてしまう。
github.com
このコメントをみると 0.14.2で解消されているらしい(私はまだ試してない)