1. 概要
- Terraform CloudのVCS連携とは何か
- 対応VCS(GitHub / GitLab / Bitbucket / Azure DevOps)
- VCS連携のセットアップ手順
- PRでのplan自動実行とmainマージ後のapply設定
- ブランチ設定とトリガーのカスタマイズ
Terraform CloudのVCS連携を設定すると、GitHubなどへのpushやPRをトリガーにterraform plan/applyが自動実行されます。コードレビューとインフラ変更が一体化した運用が可能になります。
2. VCS連携の仕組み
GitHub PR作成 / push
│ Webhook
↓
Terraform Cloud
│ Runをキュー
↓
Remote Runner
│ terraform plan(PRの場合)
│ terraform apply(mainマージ後)
↓
PRコメントに結果を投稿
3. セットアップ手順
Step 1: VCSプロバイダーを登録
Terraform Cloud → Settings → Version Control → Add a VCS Provider → GitHub.com
GitHub OAuth Appを作成し、Client IDとSecretをTerraform Cloudに登録します。
Step 2: Workspaceを作成
Workspace → New Workspace → Version control workflow → リポジトリを選択
Step 3: Workspaceの設定
- Working Directory(Terraformファイルのディレクトリ)
- Terraform Version
- Apply Method(Auto Apply / Manual Apply)
- VCS Branch(追跡するブランチ。デフォルトはmain)
4. Terraform側のコード
# VCS連携でTerraform Cloudを使う場合、cloudブロックを設定
terraform {
required_version = ">= 1.9"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
cloud {
organization = "my-org"
workspaces {
name = "production"
}
}
}
provider "aws" {
region = "ap-northeast-1"
}
variable "environment" {
description = "環境名"
type = string
default = "dev"
}
data "aws_ami" "amazon_linux_2023" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["al2023-ami-*-x86_64"]
}
}
resource "aws_instance" "web" {
ami = data.aws_ami.amazon_linux_2023.id
instance_type = "t3.micro"
root_block_device {
volume_size = 20
volume_type = "gp3"
encrypted = true
}
tags = {
Name = "${var.environment}-web"
Environment = var.environment
ManagedBy = "terraform"
}
}
5. Auto Apply vs Manual Apply
| 設定 | 動作 |
|---|---|
| Auto Apply | planが成功すると自動でapplyが実行される |
| Manual Apply | planの後、UI上で確認してからapplyをクリックする |
推奨: 本番環境はManual Apply。開発環境はAuto Applyで効率化できます。
6. トリガーのカスタマイズ
Workspace → Settings → Version Control
├─ VCS Branch: main(追跡ブランチ)
├─ Automatic Run Triggering: ✅
├─ Trigger Patterns: 特定ディレクトリの変更のみに制限可能
│ 例: environments/production/**
└─ Include submodules: Git submoduleも追跡する場合
monorepoで特定ディレクトリの変更だけをトリガーにしたい場合はTrigger Patternsを使います。
7. PRでのplan結果確認
VCS連携を設定すると、PRにTerraform CloudのRunへのリンクとplan結果のサマリーが自動投稿されます。
PR:
✅ Terraform Cloud: Plan has 2 changes to apply.
[View run in Terraform Cloud →]
8. 関連記事
- Terraform Cloud remote実行 vs local実行 — 実行モードの選択
- Terraform Cloudは無料でどこまで使える? — 料金プラン
- Terraform Cloud vs GitHub Actions — どちらで運用すべきか — プラットフォーム比較
- GitHub Actions: PR時にterraform planをコメントで返す — GHA版のPRコメント
- Terraform CI/CDのブランチ戦略 — ブランチ設計
- Atlantis vs Terraform Cloud — OSSとSaaSの使い分け — VCS連携の代替
9. まとめ
- VCS連携はTerraform CloudのWorkspace設定からGitHub OAuthアプリを登録して開始
- PR作成でterraform planが自動実行されPRにサマリーが投稿される
- mainマージ後にterraform applyが実行される(Auto Apply時は自動)
- 本番環境はManual Apply推奨(人間が最終確認してからapplyを実行)
- monorepoでは Trigger Patterns で変更があったディレクトリのみをトリガーに絞れる
対象バージョン: Terraform Cloud (2024) 公式ドキュメント: https://developer.hashicorp.com/terraform/cloud-docs/vcs