1. 概要
- Terraform Cloud / HCP Terraformとは
- 無料プランでできること
- stateのリモート管理
- リモートplan/applyの実行
- ローカルのS3バックエンドとの違い
Terraform Cloud(現在はHCP Terraformにリブランド)はHashiCorpが提供するTerraformのSaaSプラットフォームです。stateの管理・plan/applyの実行環境・チームコラボレーション機能を提供します。
2. Terraform Cloud(HCP Terraform)の主な機能
State管理
- stateをTerraform Cloudで自動管理(S3バックエンド不要)
- バージョン履歴・変更履歴が自動で保存される
- ロック機能でチームの同時実行を防ぐ
リモート実行
- plan/applyをTerraform Cloudのサーバーで実行できる
- ローカルのTerraformバージョン差異の問題がなくなる
- 実行ログがWeb UIで確認できる
チームコラボレーション
- planの結果をUIで確認しapplyを承認するワークフロー
- VCS(GitHub/GitLab)との連携でPRから自動plan
- チームメンバーへの権限設定
無料プランの範囲: 5ユーザーまで、すべての基本機能が無料で使える(2024年時点)
3. セットアップ
ステップ1: HCP Terraformへのサインアップ
https://app.terraform.ioでアカウントを作成します。
ステップ2: Organizationとworkspaceの作成
Web UIからOrganization名(例: my-company)とworkspace名(例: aws-prd)を作成します。
ステップ3: Terraformコードの設定
terraform {
required_version = ">= 1.9"
# cloud ブロックでHCP Terraformに接続
cloud {
organization = "my-company" # Organizationを指定
workspaces {
name = "aws-prd" # workspace名を指定
}
}
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "ap-northeast-1"
}
variable "environment" {
description = "環境名"
type = string
default = "prd"
}
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"
}
}
ステップ4: 認証
# HCP Terraformにログイン(トークンを取得してローカルに保存)
$ terraform login
# initでcloudバックエンドを初期化
$ terraform init
4. AWSの認証情報をHCP Terraformに設定
リモート実行モードではHCP Terraform側にAWSの認証情報を設定します。
# Web UIの Workspace → Variables → Environment Variables に追加:
# AWS_ACCESS_KEY_ID = xxxxxxxxxx
# AWS_SECRET_ACCESS_KEY = xxxxxxxxxx(Sensitiveにチェック)
# AWS_DEFAULT_REGION = ap-northeast-1
または、OIDCを使ってIAMロールを引き受ける設定もできます(推奨)。
5. ローカルS3バックエンドとの比較
| 比較 | S3バックエンド | HCP Terraform |
|---|---|---|
| stateの保存場所 | S3(自己管理) | HCP Terraform(マネージド) |
| バージョン管理 | S3のバージョニング機能 | 自動でバージョン管理 |
| インフラコスト | S3/DynamoDBのコスト | 無料プランあり |
| 初期設定の手間 | S3・DynamoDB・KMSの作成が必要 | サインアップのみ |
| CI/CD連携 | GitHub Actionsで自前構築 | VCS連携が組み込み |
| チームコラボレーション | 別途設定が必要 | UI・権限管理が組み込み |
| 実行環境 | 各自のローカル or CI | HCP Terraform(統一環境) |
6. どちらを選ぶべきか
HCP Terraformが向いている場合:
- チームでTerraformを使い始める
- CI/CDの構築コストを下げたい
- stateの自己管理インフラを避けたい
S3バックエンドが向いている場合:
- AWSのみにインフラを集約したい
- 既にS3バックエンドの運用が確立している
- HCP Terraformへの外部依存を避けたい
7. 関連記事
- backend — stateファイルの保存場所 — S3バックエンドの設定
- CI/CDパイプラインとTerraform — ローカルCI/CDの構築
- 環境分離のパターン比較 — workspaceとの関係
- state管理とは — tfstateファイルの役割・基本操作
- workspace — 同一コードで複数環境を管理
- terraform init / plan / apply / destroy — 基本コマンド
8. まとめ
- Terraform Cloud(HCP Terraform)はstateのマネージドサービス + リモート実行環境
- 5ユーザーまで無料で使える(基本機能)
cloudブロックで既存コードに組み込める。terraform login→terraform initで接続- S3バックエンドより初期設定が簡単で、チームコラボレーション機能が組み込み
- AWSのみにインフラを集約したい場合や既存S3運用があればS3バックエンドで十分
動作確認バージョン: Terraform >= 1.9 公式ドキュメント: https://developer.hashicorp.com/terraform/cloud-docs