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を利用する場合には、この出力値を参照して、他のリソースの設定に利用することができます。