どうも、TechOps管理者のukimaruです。
今回はインフラ自動化の定番ツール「Terraform(テラフォーム)」について、初心者向けに基礎をまとめてみました。
私自身、社内SEとして運用側から入ってきたタイプですが、クラウドやIaC(Infrastructure as Code)への関心からTerraformを学び始めました。
この記事では、これからTerraformを学ぶ方のために、「全体像」「基本構文」「コマンド」「設計の考え方」など、入門〜中級の入り口くらいまでを体系的にまとめています!
✅ Terraformとは?
Terraformは、インフラ構成をコードで管理できるIaCツールです。
AWSやAzure、GCPなどのクラウドリソースを、コードとして宣言し、それを元に構築・更新・削除などを自動で行ってくれます。
主な特徴は以下のとおり:
- マルチクラウド対応(AWS/Azure/GCP/OCIなど)
- 宣言型構成:やりたい状態を書くと、Terraformが差分を見てその状態にしてくれる
- 再現性のある構築が可能:同じコードでいつでも環境を再構築できる
📂 基本ファイル構成
Terraformプロジェクトでは、構成に応じて以下のようなファイルを使い分けます:
ファイル名 | 用途 |
---|---|
main.tf | メイン構成ファイル(リソースやプロバイダーの定義) |
variables.tf | 変数(入力値)の定義 |
outputs.tf | 出力したい値の定義(例:EC2のIPアドレスなど) |
terraform.tfvars | 実際に使う変数の値 |
provider.tf | クラウドプロバイダーの設定(main.tfと統合するケースもあり) |
🏗️ 基本コマンド
Terraformでよく使うコマンドは以下の通りです:
コマンド | 説明 |
---|---|
terraform init | 初期化(プロジェクト開始時に必須) |
terraform plan | 実行前の差分確認 |
terraform apply | 実行(リソース作成・更新) |
terraform destroy | リソース削除 |
terraform validate | 記述ミスのチェック |
terraform fmt | コードフォーマット(整形) |
🧩 リソース定義の基本
以下は、AWSでEC2インスタンスを立てる最小構成の例です:
provider "aws" {
region = "ap-northeast-1"
}
resource "aws_instance" "web" {
ami = "ami-0c3fd0f5d33134a76" # Amazon Linux 2
instance_type = "t2.micro"
tags = {
Name = "MyServer"
}
}
🔁 変数と出力(再利用&見やすさ)
◆ 変数の定義例(variables.tf)
variable "instance_type" {
default = "t2.micro"
}
◆ 変数の利用(main.tf)
instance_type = var.instance_type
◆ 出力の定義(outputs.tf)
output "instance_ip" {
value = aws_instance.web.public_ip
}
これにより、terraform apply
実行後にIPアドレスなどが自動で出力されます。
🗂 ステートファイル(.tfstate)
Terraformは実行結果を**ステートファイル(terraform.tfstate)**として保存します。
このファイルには、Terraformが「現在の構成をどう認識しているか」が記録されているため、非常に重要です。
◆ 注意点
- Gitなどで管理しない(AWSキーやリソース構成が含まれる)
- チーム開発時はS3 + DynamoDBでのリモートステート管理が推奨されます
🔧 モジュール(module)
モジュールは、よく使う構成を再利用可能な部品(コンポーネント)として切り出す機能です。
例:
vpc
ec2
security_group
など、繰り返し使いたい構成をモジュール化して使えます。
☁️ バックエンド / Terraform Cloud(発展)
Terraformは、状態管理やCI/CDと連携するために「Terraform Cloud」や「S3 backend」などのリモート実行環境も用意されています。
個人〜小規模開発ではローカル管理で十分ですが、チームや本番運用では以下のような構成が定番です:
- ステートはS3に保存
- ロック管理はDynamoDB
- GitHub ActionsなどのCIと連携し、自動デプロイ
🚀 初心者がまず覚えるべき5ステップ
terraform init / apply / destroy
の基本操作をマスター- EC2などの基本リソースを手でコード化して立てる
- 変数と出力を使ってコードを整理・汎用化
- セキュリティグループやIAMなど、関連リソースも追加してみる
- ステートファイルの存在と意味を理解する
📘 学習におすすめのリソース
- 🔗 Terraform公式チュートリアル
- 🔍 Qiita:Terraformタグ一覧
- 🎥 Udemy:TerraformでAWSインフラ構築講座(セールで狙うと◎)
✍️ さいごに
Terraformは「最初だけちょっと難しそう」ですが、慣れてくるとめちゃくちゃ楽になります。
構成がコード化されることで、属人化やミスが激減し、インフラがソフトウェア開発と同じように扱えるようになります。
ぜひ、自分のペースで構成ファイルを増やしながら、Terraformの力を体感してみてください!
exit 0
コメント