TerraformとOpenTofuとは?Infrastructure as Codeの基礎と2026年のOSS選択
オープンソースラボ編集部 ・ 2026年6月13日
「インフラをコードで管理する」——Infrastructure as Code(IaC)の世界標準がTerraformと、そのOSSフォークOpenTofuです。本記事で基礎から2026年の選択肢まで解説します。
Infrastructure as Codeとは
IaCはサーバー・ネットワーク・DBなどのインフラをコード(設定ファイル)で定義・管理する手法です。
メリット:
- バージョン管理(Git)でインフラ変更を追跡
- 再現可能な環境(本番と同一のステージング)
- チームでのレビュー・変更の可視化
- 手動ミスの削減
TerraformとOpenTofu
| 観点 | Terraform | OpenTofu |
|---|---|---|
| 提供元 | HashiCorp | Linux Foundation |
| ライセンス | BSL 1.1(2023〜) | MPL 2.0(完全OSS) |
| 互換性 | — | Terraform完全互換 |
| 価格 | 無料〜有料(Terraform Cloud) | 完全無料 |
2023年にHashiCorpがTerraformをBSL(商用利用制限あり)に変更したため、コミュニティがOpenTofuとしてフォーク。OpenTofu公式サイト↗・OpenTofu GitHub↗から詳細を確認できます。新規OSS利用ならOpenTofuを選ぶケースが増えています。
IaCプロバイダー比較表
| ツール | 特徴 | 向いている用途 |
|---|---|---|
| Terraform / OpenTofu | マルチクラウド対応 | AWS/GCP/Azure統合管理 |
| Pulumi | TypeScript/Python等で書ける | 開発者フレンドリー |
| Ansible | 設定管理・プロビジョニング | サーバーセットアップ |
| AWS CDK | AWS専用・TypeScript/Python | AWSオンリー環境 |
OpenTofuの基本構文(AWS EC2の例)
# main.tf
terraform {
required_providers {
aws = {
source = "registry.opentofu.org/hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "ap-northeast-1"
}
resource "aws_instance" "web" {
ami = "ami-0d52744d6551d851e"
instance_type = "t3.micro"
tags = {
Name = "web-server"
}
}
output "instance_ip" {
value = aws_instance.web.public_ip
}
# opentofu init → plan → apply
tofu init && tofu plan && tofu apply
DevOps関連OSSはDevOpsカテゴリから。インフラ関連の可観測性はOpenTelemetry解説記事も参照。OpenTofu・Terraformの詳細はツールページも参照。
Pulumi:コードでIaCを書く選択肢
Pulumi(公式サイト↗)はTypeScript・Python・Go等のプログラミング言語でインフラを定義できます。HCL(Terraform構文)より柔軟なロジックが書けるため、開発者に人気です。OSSコア版はPulumi GitHub↗で公開されています。
まとめ
2026年のIaCはOpenTofu(Terraform OSS後継)が安心の選択です。HashiCorpのBSLライセンスを気にせずチームで使えます。既存のTerraformコードはそのままOpenTofuで動きます。
よくある質問(FAQ)
Q. TerraformからOpenTofuへの移行は大変ですか?
CLIの名前がterraform→tofuに変わる以外、ほぼ変更不要です。既存の.tfファイルはそのまま動きます。
Q. Ansibleと何が違いますか?
Terraform/OpenTofuはインフラの「作成・削除」(プロビジョニング)が得意です。Ansibleはサーバー作成後の「設定・ソフトウェアインストール」(コンフィギュレーション管理)が得意です。多くの現場で両方を組み合わせて使います。
Q. Terraform Cloudなしでstateを管理するには?
S3バケット + DynamoDB(ロック)でリモートstateを管理するのが定番です。OpenTofuも同様にS3 Backendを使えます。