概要
「Terraform」
新卒研修のときに初めて触って、「インフラをコードで?」って思ったのが最初の印象でした。
正直そのときは「なんだこいつ、GUIポチポチでええやろ」と思いつつ、本気で感動してました。
「これ、クラウドの召喚魔法やん」
おもろいなと思ったので初学者向けに全5回のなんとなくわかるシリーズをお届けします!
シリーズ目次(全5回)
第1回.Terraformとは? & インストール ←この記事
第2回.terraform init を通してみよう!
第3回.AWS S3を作って壊してみよう!
第4回.StateとPlanの裏側を覗いてみよう!
第5回.便利な引数とTips集
Terraformとは?
概要
Terraformは、HashiCorp が作った「Infrastructure as Code(IaC)」ツールです。つまりインフラストラクチャをコードとして表現したもの(クラウドの設定(VPCとかS3とか)をコードで管理できるようにする仕組み)です。
たとえばこんなの
resource "aws_s3_bucket" "example" {
bucket = "my-terraform-example"
}
なんとこの数行でAWSにS3バケットが作れちゃいます。
AWSコンソールをポチポチするより早いし、Gitで管理できるのが最高。
Terraformを使うメリット
個人的に「ここが強いな」と思ったポイントをまとめました。
| メリット | 内容 |
|---|---|
| 再現性 | 同じ構成を何度でも再現できる(他環境にコピペでいける) |
| 変更履歴 | Gitで“インフラの変更”をレビューできる |
| マルチクラウド | AWS / GCP / Azure / Snowflake どれでもOK |
| チーム向け | 誰が何を変えたか分かる=属人化が減る |
GUIベースだと、同じEC2を100個作るのに毎回ポチポチしないといけないのが、Terraformでは一括でできちゃいます!!(ポチポチ地獄からの解放…!)
どの会社が使ってるの?
TerraformはNetflix、Slack、Shopifyみたいな海外大手でもガッツリ使われてます。
日本でもLINE、リクルート、ZOZO、Sansanなどなど。
導入事例の一部:https://edge-work.com/column/2172/
どんなクラウドサービスを扱えるの?
Terraformの魅力は、**「どんなクラウドでも使える」**こと!
たとえば、ざっくりこんな感じのプロバイダーが使えます。
| カテゴリ | 主なプロバイダー | ひとこと |
|---|---|---|
| パブリッククラウド | AWS / GCP / Azure | 主要クラウド全部OK。VPC、IAM、EC2、S3など全部コード化可能! |
| データ基盤系 | Snowflake / Databricks / BigQuery | データウェアハウスやML環境の構築もIaCで管理。データエンジニア必見。 |
| コンテナ / オーケストレーション | Kubernetes / Docker / EKS / GKE | クラスタやPodをTerraformからデプロイ可能。 |
などなど、、、これでも一部です!
Terraform Registryを覗くと、公式・コミュニティ合わせて数千種類以上のプロバイダーが登録されています。
(なんとAWSだけでも700以上のリソースタイプが管理対象!多すぎ!)
Terraformをインストールしてみる
ではでは、ここから実際に環境を作っていきます!
(今回はまだAWSのリソースとか作らないので安心してください)
windowsの方はGitBash前提です。
# Mac
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
# Windows
choco install terraform
# Linux(Ubuntu/Debianの場合)
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform
これが出来たらバージョンを確認してみましょう!
terraform -v
出力例
Terraform v1.13.3
これが表示されたらTerraform本体の準備OKです!
早いですね!
執筆時点(2025年11月)での公式インストール方法です。
最新版は以下の公式サイトを見てください。
https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli
tfenvを使おう
Terraformってバージョンアップ頻度が高いので、複数案件やると「このPJは1.7系、このPJは1.9系」みたいになりがちなんですよ。
そんな時に便利なのがtfenv。Terraform版バージョン管理ツールです!
インストール
# Mac
brew install tfenv
# Windows & Linux
git clone https://github.com/tfutils/tfenv.git ~/.tfenv
echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
これが出来たら
tfenv --version
でインストールできているか確認しましょう!
最新バージョンをインストールしたい時は、、
tfenv install latest
tfenv use latest
特定バージョン入れたい時は、、
tfenv install 1.9.5
tfenv use 1.9.5
これで気軽にバージョン変更が出来ます!
tfenvは2022年を最後に更新が途絶えており、現在は tenv が用いられることもあります。好みに合わせて使ってください。
トラブルのFAQ的なの
| 症状 | 対応 |
|---|---|
terraform: command not found |
PATHが通ってない。which terraform で確認。 |
tfenv: command not found |
PATHに ~/.tfenv/bin がない。~/.bashrc / ~/.zshrc に追記。 |
| バージョン変わらない | 古いバイナリが /usr/local/bin に残ってる可能性あり。削除して再実行。 |
まとめ
Terraformは「インフラをコードで管理」できるIaCの一つ!
tfenv入れとくと、Terraformのバージョン管理がめっちゃ楽。
今日は“環境構築”だけ。次回は実際に動かしてみます!
次回は terraform init あたりを触っていく予定です〜。
フォローしといてもらえると更新見逃さないですョ!