TerraformでLet'sEncryptの証明書を取得する

Qiitaで細かいの書いたので、ここ見るような奴はソースあれば分かんだろ。1) と暴論を吐いてみる

provider "acme" { server_url = "https://acme-v02.api.letsencrypt.org/directory" # server_url = "https://acme-staging-v02.api.letsencrypt.org/directory" } resource "tls_private_key" "private_key" { algorithm = "RSA" } resource "acme_registration" "reg" { account_key_pem = "${tls_private_key.private_key.private_key_pem}" email_address = "yourname@example.com" } resource "acme_certificate" "certificate" { account_key_pem = "${acme_registration.reg.account_key_pem}" common_name = "sub.example.com" # min_days_remaining = "7" dns_challenge { provider = "route53" config { AWS_PROFILE = "PROFILE_NAME" # AWS_ACCESS_KEY_ID = "${var.aws_access_key}" # AWS_SECRET_ACCESS_KEY = "${var.aws_secret_key}" AWS_DEFAULT_REGION = "ap-northeast-1" } } }

取得できる値

今回のソースで取得できる値で特に必要そうなもの

変数	内容
acme_certificate.certificate.certificate_pem	証明書（pem形式）
acme_certificate.certificate.issuer_pem	中間証明書（pem形式）
acme_certificate.certificate.private_key_pem	秘密鍵（pem形式）

更新

証明書の更新が必要な場合はterraform applyを行った際に必要に応じて自動的に行われます。
必要性はmin_days_remainingの値で判断されます。
証明書の期限がこの値を下回った場合に更新されます。（0を設定すると更新はされません）

参考

TerraformでLet'sEncryptの証明書を取得する