【てらふぉーむ】

Terraform とは?

最終更新:
💡 インフラを「コードで書いて」計画を確かめてから反映する

HashiCorp(現在はIBM傘下)が開発するIaCツール。HCLという言語でクラウドなどのインフラを宣言的に定義し、作成・変更・削除を管理する。

📌 このページのポイント
Terraform — Infrastructure as Code のフロー HCLコード resource "aws_ec2" type = "t3.micro" ami = "ami-xxx" } Plan 差分を確認 + 追加: 1 - 削除: 0 Apply 変更を実行 ✓ 適用完了 クラウド EC2 VPC / S3 State ファイル — 現在の状態を記録・管理 マルチクラウド AWS / GCP / Azure 同じ書き方で管理 コードでインフラを定義し、Planで計画を確認してからApplyで反映
Terraformのイメージ
ひよこ ひよこ
Terraformの基本的な流れは?
ペンギン先生 ペンギン先生
①.tfファイルにリソースをHCLで書く、②terraform initでプロバイダーなどを準備、③terraform planで何が作成・変更・削除されるか確認、④terraform applyで実行、の順だよ。applyは計画を表示して承認を求めるから、意図しない削除などに気づけるんだ
ひよこ ひよこ
stateファイルって何?
ペンギン先生 ペンギン先生
「設定に書いたこのリソースは、実際にはIDがこれのサーバーだよ」という対応を記録するJSON形式のファイルだよ。planのときは実際のリソースの状態を読み直してstateを最新にし、設定と比べて差分を計画するんだ。手で編集せず、terraform stateコマンドで操作するのが基本だね
ひよこ ひよこ
stateファイルはどこに置けばいいの?
ペンギン先生 ペンギン先生
チームで使うならS3などのリモートに置いて、同時に実行されないようロックするのが一般的だよ。S3では以前DynamoDBでロックしていたけど、今はS3だけでロックできるuse_lockfileが用意されていて、DynamoDBでのロックは非推奨になっているんだ。stateにはパスワードなどが平文で入ることがあるから、Gitにコミットせずアクセスを絞って守ろうね
ひよこ ひよこ
同じ構成を何回も書くのは大変そう…
ペンギン先生 ペンギン先生
そこで使うのがモジュールだよ。「VPCとサブネット」のようなまとまりをモジュールにして、本番・開発などで変数だけ変えて呼び出せるんだ。Terraform Registryには公開されたモジュールもあるけど、中身と作られるリソースを確かめてから使おうね
ひよこ ひよこ
Terraformって無料のオープンソースなの?
ペンギン先生 ペンギン先生
2023年8月にライセンスがMPL 2.0からBusiness Source License(BSL)に変わって、競合する製品での利用などに制限がついたんだ。これをきっかけに、オープンソースのまま開発を続けるフォークのOpenTofuがLinux Foundationのもとで生まれたよ。HashiCorpは2025年2月にIBMに買収されているんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Terraform」って出てきたら「コードでクラウドなどのインフラを構築・管理するツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Terraform」 = テラフォーム(惑星を地球のように改造すること)
💬 英語のterraformは、惑星の環境を地球のように作り変えることを指す言葉だよ。インフラをコードで思いどおりの形に作り変えるイメージで覚えるとわかりやすいね

参考資料

← 用語集にもどる