Terraform(テラフォーム)はインフラをコードで定義・管理するIaCツール。HCL記法でAWS・GCP・Azureを統一管理できます。基本コマンド・Stateファイル・AnsibleとTerraformの使い分けを解説。
Terraform(テラフォーム)とは、インフラをコードで定義・管理するIaC(Infrastructure as Code)ツールです。HashiCorp社が開発し、HCL(HashiCorp Configuration Language)という独自記法でAWS・GCP・Azureなど複数のクラウドを統一的に管理できます。「どのリソースを作るか」をコードで宣言すると、Terraformが現在の状態との差分を計算して適用します。
AWS・GCP・Azureなどを操作するプラグイン。providerブロックで宣言。
実際に作成するインフラリソース。EC2・S3・RDSなどをresourceブロックで定義。
現在の管理状態を記録するterraform.tfstateファイル。差分計算の基準となる。
再利用可能なTerraformコードの単位。VPCやEKSクラスタなどを共通化できる。
| ツール | 主な用途 | 向いている作業 |
|---|---|---|
| Terraform | インフラのプロビジョニング | サーバー・ネットワーク・DBの作成・変更 |
| Ansible | ミドルウェアの設定管理 | OS設定・ソフトウェアインストール・デプロイ |
現場では両者を組み合わせて使うことが多く、「TerraformでVMを作り、AnsibleでミドルウェアをセットアップしてCI/CDでデプロイ」というパターンが一般的です。
AWSプロバイダーを設定し、provider "aws" { region = "ap-northeast-1" } のように記述します。その後 terraform init でプロバイダーをインストールし、resourceブロックでEC2やS3などのリソースを定義してterraform applyで適用します。AWSのアクセスキーはIAMロールまたは環境変数で設定するのが安全です。
チーム開発ではローカルではなくS3(AWS)やGoogle Cloud Storageなどのリモートバックエンドに保存し、DynamoDBなどでStateのロックを管理するのが推奨です。ローカル保存だとGitにコミットしてしまうリスクや複数人での競合が発生します。
CloudFormationはAWSに特化したIaCツールでAWSサービスとの親和性が高い一方、マルチクラウドには対応していません。TerraformはAWS・GCP・Azureなど複数のクラウドプロバイダーを同一のHCL構文で管理できるため、マルチクラウド環境ではTerraformが有利です。
ITエンジニア向け転職サービス2強を並行利用するのが最も効果的です。
※どちらも完全無料。登録だけで市場価値を確認できます。