AWS VPCのネットワーク構成をTerraformで管理する方法を初心者向けにやさしく解説!
生徒
「AWSでネットワークを設定するときに、Terraformっていうツールを使うと便利って聞いたんですけど、どうやって使うんですか?」
先生
「Terraform(テラフォーム)は、AWSの設定をコードで書いて自動化できる便利なツールです。特にVPC(ブイピーシー)のネットワーク構成をまとめて管理するときに活躍しますよ。」
生徒
「コードでAWSを管理できるって、初心者には難しそう…」
先生
「大丈夫です。今回はTerraformでVPCの基本ネットワークを作る流れを、ひとつひとつ丁寧に説明していきますね!」
1. Terraformとは?AWS構成をコードで管理する道具
Terraform(テラフォーム)とは、Infrastructure as Code(インフラストラクチャ・アズ・コード)と呼ばれる仕組みで、サーバーやネットワークなどの構成をコードとして記述・管理できるツールです。
Terraformの読み方はテラフォームです。開発元はHashiCorp(ハシコープ)という会社です。
AWS(エーダブリューエス)のVPCやEC2、サブネット、ルートテーブルなどを、ボタン操作ではなく「設定ファイル」に書いて自動で作れるようになります。
2. VPC構成をTerraformで管理するメリット
Terraformを使ってVPCネットワークを管理すると、次のようなメリットがあります。
- 設定内容がコードで残る:誰が見ても同じ設定が再現可能
- 自動化でミスが減る:手作業よりも正確で安全
- 繰り返しの作業がラク:何度でも同じ構成を再利用できる
- バージョン管理ができる:Git(ギット)と連携して履歴を残せる
初心者にとっても、やり直しが簡単になるのが大きな利点です。
3. Terraformの準備と基本のファイル構成
Terraformを使うには、まず公式サイトからTerraformをインストールして、作業用のフォルダを用意します。
基本的なファイル構成は次のようになります:
main.tf:VPCやサブネットの設定を書くメインのファイルvariables.tf:変数(IP範囲など)を定義outputs.tf:出力結果(VPC IDなど)を表示
初心者でも、1つのファイルから始めれば大丈夫です。最初は main.tf だけで十分です。
4. TerraformでVPCとネットワークを作る基本コード例
ここでは、TerraformでAWS VPCを作る基本的なコード例を紹介します。
# main.tf
provider "aws" {
region = "ap-northeast-1"
}
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "my-vpc"
}
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "ap-northeast-1a"
tags = {
Name = "public-subnet"
}
}
このコードを main.tf に保存したら、次のように操作します:
terraform init(初期化)terraform plan(計画の確認)terraform apply(適用・作成)
これでAWSにVPCとサブネットが自動で作成されます。
5. 初心者向けのTerraform利用の注意点
Terraformを使うときは、以下のポイントに注意しましょう。
- AWSのアクセスキー設定が必要:AWS CLIや環境変数で設定
- 意図しない変更に注意:
terraform planで内容を必ず確認 - コードは定期的に保存・管理:Gitなどで履歴を残すと安心
Terraformはとても便利ですが、削除コマンドなども強力なので、内容をよく確認しながら使うことが大切です。
最初は小さな構成から試して、少しずつ慣れていくのがコツですよ。
まとめ
ここまで、AWSのネットワーク環境をコードで管理する「Terraform(テラフォーム)」の基礎知識から、具体的なVPC構築の手順までを詳しく解説してきました。クラウドインフラを構築する際、以前はAWSマネジメントコンソールにログインし、ブラウザ上でポチポチとクリックしながら設定するのが一般的でした。しかし、これでは設定ミスが起きやすく、同じ環境をもう一度作りたい時に「前はどう設定したっけ?」と迷ってしまう原因になります。
TerraformによるIaC(Infrastructure as Code)の重要性
Terraformを導入することで、ネットワーク構成はすべて「テキストファイル」という目に見える形で保存されます。これが「Infrastructure as Code(コードとしてのインフラ)」の最大の利点です。設定ファイル(.tfファイル)さえあれば、開発環境、テスト環境、本番環境といった複数の環境を、寸分違わず一瞬で再現することが可能になります。
VPC構築の実践的なコード例と解説
記事の中で紹介した基本的なVPCとサブネットの構築コードを、より実戦に近い形で整理してみましょう。ここでは、インターネットゲートウェイの設定やルートテーブルの紐付けまでを含めた、パブリックサブネットとして機能するための設定を追記したサンプルを紹介します。
# AWSプロバイダーの設定。使用するリージョンを指定します。
provider "aws" {
region = "ap-northeast-1" # 東京リージョン
}
# 1. VPCの作成
resource "aws_vpc" "main_vpc" {
cidr_block = "10.0.0.0/16"
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "terraform-vpc-sample"
}
}
# 2. サブネットの作成
resource "aws_subnet" "public_subnet" {
vpc_id = aws_vpc.main_vpc.id
cidr_block = "10.0.1.0/24"
availability_zone = "ap-northeast-1a"
tags = {
Name = "terraform-public-subnet"
}
}
# 3. インターネットゲートウェイの作成(外部通信用)
resource "aws_internet_gateway" "igw" {
vpc_id = aws_vpc.main_vpc.id
tags = {
Name = "terraform-igw"
}
}
# 4. ルートテーブルの作成
resource "aws_route_table" "public_rt" {
vpc_id = aws_vpc.main_vpc.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.igw.id
}
tags = {
Name = "terraform-public-route-table"
}
}
# 5. サブネットとルートテーブルの紐付け
resource "aws_route_table_association" "public_rt_assoc" {
subnet_id = aws_subnet.public_subnet.id
route_table_id = aws_route_table.public_rt.id
}
運用でよく使うコマンドリファレンス
Terraformを操作する際は、ターミナル(コマンドプロンプトやPowerShell)からコマンドを叩くことになります。開発現場で日常的に使用する一連の流れを確認しておきましょう。
terraform init
Initializing the backend...
Initializing provider plugins...
Terraform has been successfully initialized!
terraform plan
# 実行すると、どのリソースが作成・変更されるかが表示されます。
Plan: 5 to add, 0 to change, 0 to destroy.
terraform apply
# 内容を確認して 'yes' と入力すると実際にAWSへ反映されます。
Apply complete! Resources: 5 added, 0 changed, 0 destroyed.
これからの学習ステップ
VPCの作成に慣れてきたら、次は「セキュリティグループ」の設定や「EC2インスタンス」の立ち上げ、さらには「RDS(データベース)」との連携に挑戦してみてください。Terraformは依存関係を自動的に計算してくれるため、複雑な構成になればなるほど、その真価を発揮します。
また、実務では terraform.tfstate というファイルの管理が非常に重要になります。これは現在のインフラの状態を記録した大切なファイルです。複数人で開発する場合は、このファイルをS3などのクラウドストレージに保存する「バックエンド設定」についても学んでいくと、よりプロフェッショナルなエンジニアへの道が開けます。
ネットワークをコードで書く感覚は、最初はパズルのように感じるかもしれませんが、一度覚えてしまえばこれほど強力な武器はありません。ぜひ、自分の手でいろいろなリソースを組み立てて、クラウドの自動化を楽しんでください。
生徒
「先生、ありがとうございました!最初はコードでネットワークを作るなんて魔法みたいだと思っていましたが、実際に書いてみると『何を作っているのか』が後から見返せてすごく分かりやすいですね。」
先生
「その通りです!まさにそこがTerraformを使う最大のメリットなんですよ。例えば1ヶ月後に同じ構成をもう一度作らなきゃいけなくなった時、手動だと忘れがちですが、コードがあれば一瞬で思い出せますよね。」
生徒
「確かに。さっきコマンドで terraform plan を実行した時に、これから何が作られるのかがズラーッと出てきて、実行前にミスに気付けるのも安心だなって思いました。」
先生
「いいところに気づきましたね。インフラ作業は一つのミスが大きなトラブルに繋がることもあります。だからこそ、事前に計画を確認し、チームでコードをレビューし合うことが大切なんです。次は変数の管理(variables.tf)を使って、もっとスマートにコードを書く方法を勉強してみましょうか?」
生徒
「はい!もっと効率的に管理できるようになりたいです。頑張ります!」