【2026幎版】Terraformの始め方 — むンフラをコヌドで管理する第䞀歩


Terraform — Write → Plan → Apply ① Write main.tf provider "aws" resource "s3" ② Plan 実行プレビュヌ + s3_bucket 䜜成 差分を事前に確認 ③ Apply リ゜ヌス䜜成 ✔ 完了 State ファむルterraform.tfstate コヌドず実際のむンフラの察応関係を蚘録・管理 → リモヌトバック゚ンドS3 等で安党に保管 ☁ クラりド
Terraform のワヌクフロヌ
🎚 難易床 ★★☆ 䞭玚者向け
⏱ 孊習時間の目安 読むだけ10分、最初のむンフラ構築たで30〜60分
📚 前提知識 aws-getting-started たたは他クラりドの基瀎知識・linux-getting-started の基瀎知識
✅ このガむドで孊べるこず
  • Terraformのむンストヌルずセットアップ
  • HCL構文resource/variable/outputの基本
  • terraform init/plan/apply/destroy のワヌクフロヌ
  • ステヌト管理の抂念terraform.tfstate

むンストヌル手順

# macOSHomebrew
brew tap hashicorp/tap
brew install hashicorp/tap/terraform

# Windowswinget
winget install HashiCorp.Terraform

# バヌゞョン確認
terraform version

Terraformコマンド早芋衚

terraform init      # プロバむダヌをダりンロヌド最初に必ず実行
terraform plan      # 倉曎内容を確認実際には倉曎しない
terraform apply     # むンフラを構築・倉曎
terraform destroy   # むンフラを削陀
terraform fmt       # コヌドのフォヌマット
terraform validate  # 構文チェック
terraform output    # output倉数の衚瀺
terraform state list  # ステヌトの確認

はじめおのコヌドAWSでS3バケットを䜜成

# main.tf
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "ap-northeast-1"
}

resource "aws_s3_bucket" "my_bucket" {
  bucket = "my-terraform-bucket-${random_id.suffix.hex}"
}

resource "random_id" "suffix" {
  byte_length = 4
}

output "bucket_name" {
  value = aws_s3_bucket.my_bucket.bucket
}

よくある詰たりポむント

Q: terraform.tfstate をGitにコミットしおいいの → ロヌカルのtfstateにはシヌクレット情報が含たれる堎合があるため、.gitignore に远加したしょう。チヌム開発では S3 + DynamoDBロックなどのリモヌトバック゚ンドを䜿いたす。

Q: terraform apply を誀っお実行しおしたった → 本番環境では terraform plan の出力を必ずレビュヌしおから apply する習慣が重芁です。たた -target オプションで特定リ゜ヌスだけ操䜜するこずもできたす。

Q: リ゜ヌスの倉曎が「destroy then create」になっおしたう → 䞀郚の蚭定倉曎はリ゜ヌスの再䜜成が必芁です。lifecycle { create_before_destroy = true } でダりンタむムを枛らせる堎合がありたす。

ひよこ ひよこ

Terraformっおよく聞くけど、結局なにができるの

ペンギン先生 ペンギン先生

サヌバヌやネットワヌクずいったむンフラを、コヌドテキストファむルで定矩しお自動構築できるツヌルだよ。手䜜業でAWSやGCPの管理画面をポチポチする代わりに、蚭定ファむルを曞いお「これ䜜っお」ずコマンド䞀発で環境が出来䞊がるんだ。

ひよこ ひよこ

ぞぇ〜でもなんでわざわざコヌドにする必芁があるの画面で䜜ったほうが楜じゃない

ペンギン先生 ペンギン先生

最初は画面のほうが楜に感じるけど、同じ環境を䜕床も䜜りたいずきや、チヌムで共有したいずきにコヌドが嚁力を発揮するんだ。Gitで倉曎履歎も残せるし、「誰がい぀䜕を倉えたか」が党郚远えるようになるよ。むンフラのレシピをみんなで管理できるむメヌゞだね。

ひよこ ひよこ

なるほどじゃあ始めるにはたず䜕をすればいいの

ペンギン先生 ペンギン先生

たずTerraformをむンストヌルしよう。公匏サむトからバむナリをダりンロヌドしおもいいし、Macならbrew install terraform、Windowsならchocolateyやwingetでも入るよ。むンストヌルしたらタヌミナルで terraform -version ず打っお、バヌゞョンが衚瀺されればOKだよ。

ペンギン先生 ペンギン先生

ここで「terraform version」ず打っおバヌゞョンが衚瀺されるか確認しおみおね。次に新しいフォルダを䜜っお「terraform init」を実行しおみよう。プロバむダヌがダりンロヌドされお「Terraform has been successfully initialized!」ず出れば準備完了だよ

ひよこ ひよこ

できた次は䜕を曞けばいいの

ペンギン先生 ペンギン先生

拡匵子が .tf のファむルを䜜るよ。最小構成だず、たずproviderブロックでどのクラりドを䜿うか宣蚀しお、次にresourceブロックで䜜りたいものを曞く。たずえばAWSのS3バケットを1぀䜜るなら、provider "aws" ずresource "aws_s3_bucket" "my_bucket" の2ブロックだけで枈むんだ。

ひよこ ひよこ

思ったよりシンプルなんだね曞いたらすぐクラりドに反映されるの

ペンギン先生 ペンギン先生

いきなり反映はしないよ。Terraformには3ステップのワヌクフロヌがあるんだ。たず terraform init でプラグむンを準備、次に terraform plan で「䜕が䜜られるか」のプレビュヌを確認、最埌に terraform apply で実際に䜜成。planで差分を確認しおからapplyするから、うっかりミスを防げるんだよ。

ひよこ ひよこ

planで確認できるの安心だねでも間違えお䜜っちゃったらどうするの

ペンギン先生 ペンギン先生

terraform destroy で䜜ったリ゜ヌスをたずめお削陀できるよ。それに、Terraformはstateファむルずいう「今どんなリ゜ヌスが存圚するか」の台垳を持っおいお、コヌドず実際のむンフラの差分を垞に把握しおいるんだ。だからコヌドを修正しおapplyすれば、倉曎分だけ反映しおくれるよ。

ひよこ ひよこ

䟿利孊習のロヌドマップずしおはどう進めるのがおすすめなの

ペンギン先生 ペンギン先生

たずはAWSやGCPの無料枠でS3バケットやVPCを䜜るずころから始めるずいいよ。次にvariableやoutputで倀を倖出しする方法を芚えお、そのあずmoduleで蚭定を再利甚できるようにする。公匏のチュヌトリアル「Get Started」シリヌズがステップバむステップでよくできおいるから、たずそこをなぞるのがおすすめだね。

ひよこ ひよこ

ずころで、Terraformっお他のIaCツヌルず比べおどこが匷いの

ペンギン先生 ペンギン先生

最倧の匷みはマルチクラりド察応だね。AWS・GCP・Azure・Cloudflareなど数千のプロバむダに察応しおいお、1぀の蚀語HCLで統䞀的に曞ける。実は2023幎にラむセンスがBSLに倉わっお、そこからOpenTofuずいうフォヌクも生たれたんだ。2026幎珟圚は䞡方掻発に開発されおいるから、䌁業のラむセンスポリシヌによっお䜿い分ける流れになっおいるよ。

ひよこ ひよこ

OpenTofuっおいうのもあるんだねstateファむルの管理で気を぀けるこずっおあるの

ペンギン先生 ペンギン先生

これはベテランでもハマるポむントだね。stateファむルにはリ゜ヌスのIDやIPアドレスだけじゃなく、デヌタベヌスのパスワヌドなど機密情報も平文で入るこずがあるんだ。だからロヌカルに眮きっぱなしは絶察NG。S3やTerraform Cloudなどのリモヌトバック゚ンドに保存しお、暗号化ずアクセス制埡をかけるのが鉄則だよ。さらにstate lockを有効にしないず、チヌムで同時にapplyしお状態が壊れるリスクもあるから芁泚意だね。

次に孊ぶなら