Terraform てらふぉーむ
IaCクラウドインフラHCLHashiCorpマルチクラウドプロビジョニング
Terraformって何?
簡単に言うとこんな感じ!
AWSやGCPなどのクラウドに「サーバーをこう作って、ネットワークをこう設定して」というインフラ構成を、テキストファイルに書いて自動で作ってくれるツールだよ。クラウドの「設計図を書けば全部やってくれる建設業者」みたいなイメージ!AWSもGCPもAzureも1つのツールで管理できるのが強みなんだ。
Terraformとは
Terraformとは、HashiCorpが2014年に公開したクラウドインフラをコードで宣言的に管理するIaCツールです。AWS・GCP・Azure・Alibaba Cloudなど700以上のプロバイダーに対応し、1つのツールでマルチクラウド・マルチサービスのリソース管理が可能です。設定ファイルはHCL(HashiCorp Configuration Language)という独自のDSL(ドメイン固有言語)で記述します。
Terraformの核心は状態管理(State)です。terraform.tfstateというJSONファイルに現在のインフラ状態を記録し、次の実行時にコードと差分を比較します。terraform planコマンドで「何が変わるか」を事前に確認でき、terraform applyで実際に変更を適用します。状態ファイルはS3やTerraform Cloudなどのリモートバックエンドで管理するのが本番運用の標準です。
2023年にHashiCorpがTerraformのライセンスをBSLに変更したため、OSSフォークのOpenTOFUがLinux Foundation傘下のCNCFに誕生しました。エンタープライズ向けには有料のTerraform Cloud / HCP Terraformが提供されています。
Terraformの主要コマンドと概念
| コマンド / 概念 | 説明 |
|---|---|
terraform init | プロバイダープラグインのダウンロード・初期化 |
terraform plan | 現状との差分を表示(何が作られ・変更され・削除されるか) |
terraform apply | planの変更を実際に適用する |
terraform destroy | 管理するインフラを全て削除する |
| State(状態) | 現在のインフラ状態を記録したJSONファイル |
| Provider | AWS・GCPなど各クラウドのAPIを叩くプラグイン |
| Module | 再利用可能なリソース定義のまとまり |
| Workspace | 同一コードで複数環境(dev/stg/prod)を管理する機能 |
歴史と背景
- 2014年:HashiCorpがTerraform 0.1をOSS公開。Puppetなどのコンフィグ管理ツールとは異なるインフラプロビジョニングに特化
- 2017年:Terraform 0.10でプロバイダーを分離。600以上のプロバイダーが登場するエコシステムが形成
- 2021年:Terraform 1.0リリース。後方互換性保証・本番利用が加速
- 2023年8月:HashiCorpがライセンスをMPL(Mozilla Public License)からBSL(Business Source License)に変更。商用利用への懸念が広まる
- 2023年9月:OpenTOFUがTerraformのMPLフォークとしてLinux Foundation傘下で発足
- 2024年:HashiCorpがIBMに買収。TerraformはHCP Terraformとして継続
Terraformの実行フロー
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| OpenTOFU | Terraform MPL 1.5フォークのOSS実装(Linux Foundation / CNCF Sandbox) |
| Terraform Registry | HashiCorpが運営するProviderとModuleの公開レジストリ |
関連用語
- IaC(Infrastructure as Code) — Terraformが代表するインフラをコードで管理するアプローチ
- Ansible — サーバー設定管理に強いIaCツール。Terraformとの役割分担で使われることも
- GitOps — TerraformのコードをGitで管理し、パイプラインで自動適用する運用手法
- CI/CDパイプライン — terraform plan/applyをパイプラインで自動実行する
- Kubernetes — TerraformのKubernetesプロバイダーでクラスター自体を管理できる
- Docker — Terraformがプロビジョニングしたインフラ上でDockerコンテナが動く
- SRE — インフラの再現性・変更管理にTerraformを活用するSREの実践