project
├── main.tf
├── variables.tf
├── outputs.tf

project: Terraformのプロジェクトのルートディレクトリです。
main.tf: AWSのリソースを定義するためのTerraformコードを記述します。ここでは、VPC、サブネット、ルートテーブル、インターネットゲートウェイなど、VPCに必要なリソースを定義します。
variables.tf: コード内で使用する変数を定義します。ここでは、VPCのCIDRブロックやサブネットのCIDRブロックなどを変数として定義します。
outputs.tf: Terraformの実行結果を出力するためのコードを記述します。ここでは、作成されたVPCのIDやサブネットIDなどを出力します。

 

以下は、上記のディレクトリ構成の例として、

VPC、サブネット、ルートテーブル、インターネットゲートウェイを定義する main.tf の例です。

# VPCの作成
resource "aws_vpc" "example" {
  cidr_block = var.vpc_cidr

  tags = {
    Name = "example-vpc"
  }
}

# パブリックサブネットの作成
resource "aws_subnet" "public" {
  vpc_id = aws_vpc.example.id
  cidr_block = var.public_subnet_cidr
  map_public_ip_on_launch = true

  tags = {
    Name = "public-subnet"
  }
}

# プライベートサブネットの作成
resource "aws_subnet" "private" {
  vpc_id = aws_vpc.example.id
  cidr_block = var.private_subnet_cidr

  tags = {
    Name = "private-subnet"
  }
}

# インターネットゲートウェイの作成
resource "aws_internet_gateway" "example" {
  vpc_id = aws_vpc.example.id

  tags = {
    Name = "example-igw"
  }
}

# ルートテーブルの作成
resource "aws_route_table" "example" {
  vpc_id = aws_vpc.example.id

  route {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.example.id
  }

  tags = {
    Name = "example-rt"
  }
}

# パブリックサブネットとルートテーブルの関連付け
resource "aws_route_table_association" "public" {
  subnet_id = aws_subnet.public.id
  route_table_id = aws_route_table.example.id
}

 

なお、上記のコードでは、変数の var.vpc_cidr、var.public_subnet_cidr、var.private_subnet_cidr を参照しています。

これらの変数は、variables.tfに記載されています。

 

VPCのCIDRブロックを定義する variables.tf ファイルの内容

variable "vpc_cidr" {
  description = "CIDR block for the VPC"
  type        = string
  default     = "10.0.0.0/16"
}

variable "public_subnet_cidr" {
  description = "CIDR block for the public subnet"
  type        = string
  default     = "10.0.1.0/24"
}

variable "private_subnet_cidr" {
  description = "CIDR block for the private subnet"
  type        = string
  default     = "10.0.2.0/24"
}

 

outputs.tfはどのようなものか?

outputs.tf ファイルは、Terraformが作成したAWSリソースの情報を出力するためのファイルです。これにより、作成されたリソースの詳細な情報を取得し、必要に応じて他のTerraformプロジェクトに渡したり、手動で設定したりすることができます。

以下は、例として作成されたVPCのIDを outputs.tf ファイルに出力するコードです。

output "vpc_id" {
  value = aws_vpc.example.id
}

 

ここで、output ブロックの vpc_id は出力名を表します。また、value には出力する値を指定します。この例では、aws_vpc.example.id というVPCのIDを出力しています。

outputs.tf ファイルには、作成したリソースの詳細情報を出力するためのコードを記述できます。例えば、作成したサブネットやルートテーブルのID、IPアドレス範囲などを出力することができます。また、別のTerraformプロジェクトでこのVPCを利用する場合には、この出力値を参照して、他のリソースの設定に利用することができます。

おすすめの記事