
Terraformは2014年、HashiCorp社が公開したIaC(Infrastructure as Code)ツールです。クラウドインフラ(AWS、Azure、GCPなど)を独自言語HCL(HashiCorp Configuration Language)で宣言的に記述し、「コード→クラウド上の実体」へと自動反映します。現在では複数クラウドにまたがるインフラ管理のデファクトスタンダードと言える存在です。
この記事の目次
- Terraformの基本コマンド
- 状態管理(state)の重要性
- モジュール化とワークスペース
- Terraformとライセンス問題
- まとめ
Terraformの基本コマンド

Terraformの操作は init / plan / apply / destroy の4ステップが基本です。init で必要なプロバイダプラグインを取得、plan で「適用したら何が変わるか」を予告し、apply で実際にクラウドに反映、destroy で全リソースを削除します。
planで変更内容を必ず確認してから applyする運用が事故防止の鉄則。本番反映前にチームで diff をレビューする文化が、Terraformの大きな価値の一つです。
状態管理(state)の重要性

Terraformは現状のインフラを terraform.tfstate というJSONファイルで把握します。ローカルに置くと共同作業ができないため、本番運用ではS3+DynamoDBやTerraform Cloudのリモートバックエンドに保存して、ロック機構で同時編集の衝突を防ぐのが定番です。
stateファイルには平文のシークレット(DBパスワードなど)が含まれることもあるため、暗号化と権限管理は必須。GitHubリポジトリに誤コミットする事故が時々起きるので、.gitignore 設定は必ず確認しましょう。
モジュール化とワークスペース

Terraformはmodule機構で再利用性を高められます。「VPCを作る一連の手順」「ECSクラスタの定義」などをモジュール化しておけば、開発/ステージング/本番で使い回せます。公式のTerraform Registryには公開モジュールが大量にあり、AWS VPC、EKS、RDSなどは既製品を組み合わせるのが現実的です。
環境(dev / staging / prod)の分離には workspace を使う方法もありますが、実務では「ディレクトリ別にstateを分ける」やり方が主流になっています。Terragrunt等のラッパで管理する企業も多いです。
Terraformとライセンス問題

2023年8月、HashiCorpがTerraformを含む主要製品をBSL(Business Source License)に変更しました。「直接競合する商用サービスとして使うのを制限する」ライセンスで、OSSの定義からは外れたとされます。
これを受けてLinux Foundationが「OpenTofu」として完全互換のフォークOSSを立ち上げ、Spacelift、env0、Scalrなど大手ベンダーが支援。現状はTerraformとOpenTofuの両建てで、新規導入時にどちらを選ぶか検討する場面が増えています。
まとめ
Terraformは複数クラウドにまたがるインフラ運用のスタンダードを作り、現代のクラウド運用に欠かせない道具となりました。ライセンス事情の変化はあるものの、HCLでインフラを表現するスキルは今後も長く価値を持ち続けます。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント