クラウドインフラエンジニア
TerraformによるCI/CDパイプライン構築例
概要
このページでは、TerraformとGitHub Actionsを用いたCI/CDパイプラインの構築例を紹介します。
小規模環境での構築ながら、チーム開発・現場運用を前提とした設計・再現性・通知設計までを意識して構成しています。
「この構成を導入すれば、現場でちゃんと回る」──そう思ってもらえることを目的にまとめています。
✅ アピールポイント
- 語れる構成:CI/CDの各ステップに明確な意図と設計理由があり、説明・教育・改善が可能
- 再現性と運用性:Applyログの保存・Slack通知・環境分離など、実運用に必要な仕組みを網羅
- チーム対応力:PRラベルによる環境判定、Slack通知によるフィードバック設計など、複数人開発を前提とした構成
- 安全性と信頼性:OIDCによるAWS認証、Apply排他制御、Secrets管理など、セキュリティと安定性を両立
CI/CDパイプライン構成図

CI/CDパイプライン詳細(Terraform構成)
CI(継続的インテグレーション)
- Pull Request作成時にGitHub Actionsが起動
terraform initによる初期化(Workspaceとstateの設定)terraform fmt/validate/tflintによるコード検証terraform planによる差分確認plan.txtをPull Requestコメントに自動投稿し、レビュー担当者が差分を確認可能- PRラベル(
env:dev/env:prod)による環境判定を自動化
CD(継続的デリバリー)
workflow_dispatchによるApply実行(環境選択式)terraform applyのログを画面とファイルに同時出力(tee)- ApplyログをS3にアップロードし、Slack通知でURLを共有
- Apply処理には
concurrencyによる排他制御を導入し、同一環境での同時実行を防止
環境分離と安全設計
- Terraform Workspaceにより
dev/prodを分離 .tfvarsとtfstateのkeyを環境ごとに切り替え- Applyログは環境別のS3バケットに保存し、Slack通知も環境別に展開
- AWS認証はOIDCを使用し、GitHub ActionsからIAMロールをAssume(Secrets不要)
Slack通知による運用補助
- Apply成功時にSlack通知を送信し、S3ログのURLを共有
- ログは誰でも閲覧可能なURLとして通知され、トラブルシュートやレビューに活用可能
- 今後はSlack Botによる承認フロー連携や通知チャンネルの分離も視野に
補足
- 小規模環境での構築ながら、チーム開発・現場導入を前提とした設計思想で構築
- 構成図・README・通知設計まで一貫して整備し、説明・教育・改善が可能な状態
- 「語れる構成」「任せられる構成」として、現場導入・案件対応に活用できるレベルを目指しています
Terraform × GitHub ActionsによるCI/CD構成を、運用・通知・安全性まで含めて一貫して設計。
「この人に任せれば、現場でちゃんと回る」──そう思ってもらえる構成を目指しました。
🔗 この構成のGitHub Repositoryはこちら → terraform-cicd