個人ドメインのインフラを Terraform で管理する
個人ドメイン ota2000.com のインフラを全て Terraform で管理している。
構成
- DNS: CNAME、MX、SPF、DKIM、DMARC
- Cloudflare Pages: GitHub 連携による自動デプロイ
- Email Routing: Gmail への転送ルール
- Bulk Redirects: 短縮 URL (
/s/githubなど) - Transform Rules: セキュリティヘッダー
なぜ Terraform で管理するか
Cloudflare のダッシュボードでも設定はできる。ただ Terraform にしておくと便利な点がいくつかある。
- 変更履歴が Git に残る。誰が何をいつ変えたか明確
- PR ベースでレビューできる
- 同じ構成を別ドメインにも適用できる
- 手動変更があれば
terraform planで検知できる
Cloudflare Provider v5 の注意点
Cloudflare の Terraform Provider v5 では構文が大きく変わった。
# v4 (ブロック構文)
build_config {
build_command = "npm run build"
}
# v5 (オブジェクト引数)
build_config = {
build_command = "npm run build"
}
rules や items も同様にリスト形式に変わっている。v4 のサンプルコードをそのまま使うとエラーになるので注意。
Backend
State 管理には Terraform Cloud (Free) を使っている。個人利用なら 500 リソースまで無料で、Web UI から plan/apply の結果も確認できる。
個人サイトでも IaC 化しておくと設定の見通しが良くなる。DNS レコードは手動管理だと何のために追加したか忘れがちなので、コードとして残しておく価値がある。