製品プロフィール

Terraform

HashiCorp / IaC(プロビジョニング)

インフラをコードで宣言的に構築する IaC ツール。多数のクラウド/サービスに対応し、状態管理で差分を適用する。

3つの要点
TL;DR
  1. インフラをコードで宣言的に構築する IaC ツール。
  2. 巨大なプロバイダ網でマルチクラウドに対応。plan で事前確認。
  3. クラウド基盤構築の定番。設定中心で、手続き処理は Ansible 寄り。

基本情報

仕様と立ち位置

Terraform のロゴ
製品・技術の概要Terraformインフラをコードで宣言的に構築する IaC ツール。多数のクラウド/サービスに対応し、状態管理で差分を適用する。
種別
IaCプロビジョニング)
提供元
HashiCorp
ライセンス
BSL旧 MPL)
登場
2014年
最大の強み
宣言的マルチクラウド対応巨大なプロバイダ網
代表的な用途
クラウドインフラの構築マルチクラウド/サービス / 再現可能な環境

選定ガイド

選定ポイント

採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。

採用に向く条件

選ぶ理由

  1. 宣言的・マルチクラウド対応
  2. 巨大なプロバイダ網
  3. plan で変更を事前確認できる

事前に確認する条件

考慮すべき点

  1. 状態(state)管理に注意が要る
  2. ライセンス変更(BSL)の議論
  3. 手続き的な処理は不得手

詳しい解説

もっと詳しく

どんなツールか

Terraform は、インフラを設定ファイルで定義・管理する IaC(Infrastructure as Code)の定番ツールです。サーバーやネットワーク、データベースといったクラウド上のリソースを、コードとして記述して構築できます。

「結局なに?」を一言でいえば、インフラ構成をコードで宣言し、その通りに作る仕組みです。手作業でコンソールを操作する代わりに、構成をファイルに残し、再現・変更管理ができます。

横にスクロール

Terraformが構成を初期化し、configuration、state、provider APIで取得した実インフラを比較してplanを作り、stateをロックしてapplyし、成功した変更をstateへ記録する流れ
Terraformはinitでbackendとproviderを準備し、構成・state・実インフラの3つを比較して変更計画を作ります。applyでは対応backendのstate lockを取得し、承認した計画を依存順に実行して成功分をstateへ記録します。途中失敗は自動で巻き戻らないため、残った実体とstateを再確認してplanからやり直します。

特徴・仕組み

リソースは HCL という専用言語で宣言的に書きます。「何を作るか」を記述すると、Terraform が現状との差分を計算し、必要な作成・変更・削除を実行します。

resource "aws_instance" "web" {
  ami           = "ami-123456"
  instance_type = "t3.micro"
}

要点は次の通りです。

  • プロバイダー: AWS・Azure・GCP や SaaS など各基盤を操作するプラグイン。同じ流儀で多様なリソースを扱える。
  • state(ステート): 管理対象の現状を記録するファイル。コードと実体を突き合わせる台帳で、Terraform の心臓部。
  • plan → apply: 適用前に「何がどう変わるか(追加・変更・破棄)」を確認してから反映できる。
  • モジュール: 構成を再利用可能な部品にまとめられる。

得意・不得意

  • 宣言的な記述で、インフラの構築・変更・破棄を再現性高く扱える。
  • マルチクラウドに対応し、同じ流儀で複数の基盤を管理できる。
  • 反面、state の管理が運用の要。state が壊れる・実体とずれる・平文で機密を含む、といった点が事故につながる。意図しない破壊的変更(作り直し)にも注意が要る。

Ansible との違い

観点TerraformAnsible
主目的インフラ(土台)の構築・管理サーバー中身の設定・デプロイ
流儀宣言的・状態管理手続き寄り・冪等な適用
状態state で追跡都度あるべき状態へ寄せる
対象クラウドのリソース既存サーバー群

サーバーの中身の設定やソフト導入は Ansible のような構成管理が担当で、Terraform は「土台となるインフラの構築」に主眼を置く役割分担です。両者は併用されます。

使いどころ・注意点

state の保護とロック

本番では state をローカルに置かず、S3+ロック(DynamoDB や S3 ネイティブロック)や Terraform Cloud などのリモートバックエンドで共有・排他制御します。state には機密が平文で入り得るため暗号化・アクセス制限を徹底します。ライセンス変更を機に生まれた互換フォークの OpenTofu も選択肢です。

総じて Terraform は、宣言的な記述と plan による安全な変更で、マルチクラウドのインフラを再現性高く管理する IaC の定番です。

実装・運用の視点

Terraformを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

クラウドインフラの構築

比較で見る軸

種別: IaC(プロビジョニング) / 提供元: HashiCorp / ライセンス: BSL(旧 MPL)

導入後に効く点

巨大なプロバイダ網

先に潰すリスク

状態(state)管理に注意が要る

数字・仕様の読み方
種別
IaC(プロビジョニング)
提供元
HashiCorp
ライセンス
BSL(旧 MPL)
登場
2014年

判断チェックリスト

  • 自社の用途が「クラウドインフラの構築 / マルチクラウド/サービス」に近いか確認する。
  • 強みである「宣言的・マルチクラウド対応」が本当に評価軸になるか確認する。
  • 注意点の「状態(state)管理に注意が要る」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

クラウドインフラの構築マルチクラウド/サービス再現可能な環境

向いている用途

こんな用途に向く

クラウドインフラの構築マルチクラウド/サービス再現可能な環境
公式サイト