採用に向く条件
選ぶ理由
- 宣言的・マルチクラウド対応
- 巨大なプロバイダ網
- plan で変更を事前確認できる
製品プロフィール
HashiCorp / IaC(プロビジョニング)
インフラをコードで宣言的に構築する IaC ツール。多数のクラウド/サービスに対応し、状態管理で差分を適用する。
基本情報
選定ガイド
採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。
採用に向く条件
事前に確認する条件
詳しい解説
Terraform は、インフラを設定ファイルで定義・管理する IaC(Infrastructure as Code)の定番ツールです。サーバーやネットワーク、データベースといったクラウド上のリソースを、コードとして記述して構築できます。
「結局なに?」を一言でいえば、インフラ構成をコードで宣言し、その通りに作る仕組みです。手作業でコンソールを操作する代わりに、構成をファイルに残し、再現・変更管理ができます。
横にスクロール
リソースは HCL という専用言語で宣言的に書きます。「何を作るか」を記述すると、Terraform が現状との差分を計算し、必要な作成・変更・削除を実行します。
resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t3.micro"
}
要点は次の通りです。
| 観点 | Terraform | Ansible |
|---|---|---|
| 主目的 | インフラ(土台)の構築・管理 | サーバー中身の設定・デプロイ |
| 流儀 | 宣言的・状態管理 | 手続き寄り・冪等な適用 |
| 状態 | state で追跡 | 都度あるべき状態へ寄せる |
| 対象 | クラウドのリソース | 既存サーバー群 |
サーバーの中身の設定やソフト導入は Ansible のような構成管理が担当で、Terraform は「土台となるインフラの構築」に主眼を置く役割分担です。両者は併用されます。
本番では state をローカルに置かず、S3+ロック(DynamoDB や S3 ネイティブロック)や Terraform Cloud などのリモートバックエンドで共有・排他制御します。state には機密が平文で入り得るため暗号化・アクセス制限を徹底します。ライセンス変更を機に生まれた互換フォークの OpenTofu も選択肢です。
総じて Terraform は、宣言的な記述と plan による安全な変更で、マルチクラウドのインフラを再現性高く管理する IaC の定番です。
実装・運用の視点
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
クラウドインフラの構築
種別: IaC(プロビジョニング) / 提供元: HashiCorp / ライセンス: BSL(旧 MPL)
巨大なプロバイダ網
状態(state)管理に注意が要る
向いている用途