🍣
Terraformのsubnet用のモジュール
subnetのモジュールファイル
subnet.tfファイル
# Public サブネットを作成
resource "aws_subnet" "public" {
count = length(var.public_subnets) # 公開サブネットの数だけリソースを作成
vpc_id = var.vpc_id # VPC ID
cidr_block = var.public_subnets[count.index].cidr # CIDR ブロック
availability_zone = var.public_subnets[count.index].az # 利用可能ゾーン
map_public_ip_on_launch = true # EC2 インスタンスにパブリック IP を自動割り当て
tags = {
Name = var.public_subnets[count.index].name # タグ名
}
}
# Protected サブネットを作成
resource "aws_subnet" "protected" {
count = length(var.protected_subnets) # 保護されたサブネットの数だけリソースを作成
vpc_id = var.vpc_id # VPC ID
cidr_block = var.protected_subnets[count.index].cidr # CIDR ブロック
availability_zone = var.protected_subnets[count.index].az # 利用可能ゾーン
tags = {
Name = var.protected_subnets[count.index].name # タグ名
}
}
# Datastore サブネットを作成
resource "aws_subnet" "datastore" {
count = length(var.datastore_subnets) # データストアサブネットの数だけリソースを作成
vpc_id = var.vpc_id # VPC ID
cidr_block = var.datastore_subnets[count.index].cidr # CIDR ブロック
availability_zone = var.datastore_subnets[count.index].az # 利用可能ゾーン
tags = {
Name = var.datastore_subnets[count.index].name # タグ名
}
}
variables.tfファイル
# VPCのID
variable "vpc_id" {
description = "VPCのID"
type = string
}
# Publicサブネットの設定
variable "public_subnets" {
description = "Publicサブネットの設定"
type = list(object({ name = string, cidr = string, az = string }))
}
# Protectedサブネットの設定
variable "protected_subnets" {
description = "Protectedサブネットの設定"
type = list(object({ name = string, cidr = string, az = string }))
}
# Datastoreサブネットの設定
variable "datastore_subnets" {
description = "Datastoreサブネットの設定"
type = list(object({ name = string, cidr = string, az = string }))
}
output.tfファイル
# PublicサブネットIDを出力
output "public_subnet_ids" {
value = aws_subnet.public[*].id
}
# ProtectedサブネットIDを出力
output "protected_subnet_ids" {
value = aws_subnet.protected[*].id
}
# DatastoreサブネットIDを出力
output "datastore_subnet_ids" {
value = aws_subnet.datastore[*].id
}
providers.tfファイル
# 必要なプロバイダとそのバージョンを定義
terraform {
required_providers {
aws = {
source = "hashicorp/aws" // AWSプロバイダのソース
version = "~> 5.0" // バージョン指定
}
}
}
# AWSプロバイダの設定
provider aws {
region = "ap-northeast-1" // AWSリージョン(東京リージョン)
}
README.mdファイル
subnet.tfファイル
項目 | 説明 |
---|---|
aws_subnet |
AWSのサブネットを定義するTerraformリソースです。 |
count |
サブネットを作成する数を指定します。var.public_subnets の要素数に依存します。 |
vpc_id |
このサブネットが所属するVPCのIDを指定します。 |
cidr_block |
サブネットのCIDRブロックを指定します。 |
availability_zone |
サブネットが存在するAWSの可用性ゾーン(AZ)を指定します。 |
map_public_ip_on_launch |
新しいインスタンスに公開IPアドレスを自動割り当てるかどうかを指定します。 |
variables.tfファイル
項目 | 説明 |
---|---|
variable |
外部から値を受け取るための変数定義です。 |
type |
受け取る変数のデータ型を定義します。例えば、string 、list など。 |
description |
変数の説明です。これはオプションであり、文書化に役立ちます。 |
output.tfファイル
項目 | 説明 |
---|---|
output |
Terraformが適用(apply)された後に出力する値を定義します。 |
value |
出力する値を指定します。ここでは各サブネットのIDを出力しています。 |
Discussion