知り合いが、構築をIaCで行っているそうで、関連知識を深めようと思います。
前回からの続きで、以下のファイルはVPC作成の本体です。
4) main.tf
locals {
tags = {
Project = var.name
Managed = “terraform”
}
}
resource “aws_vpc” “this” {
cidr_block = var.vpc_cidr
enable_dns_support = true
enable_dns_hostnames = true
tags = merge(local.tags, { Name = “${var.name}-vpc” })
}
サブネットの作成も同ファイルに記載する場合は、以下のようになります。
for_eachで回しているのは、以前のvariables.tfファイルで定義したAZになります。each.~に値が入って設定されます。
resource “aws_subnet” “public” {
for_each = { for i, az in var.azs : az => i }
vpc_id = aws_vpc.this.id
availability_zone = each.key
cidr_block = var.public_subnet_cidrs[each.value]
map_public_ip_on_launch = true
tags = merge(local.tags, { Name = “${var.name}-public-${each.key}” })
}
resource “aws_subnet” “private” {
for_each = { for i, az in var.azs : az => i }
vpc_id = aws_vpc.this.id
availability_zone = each.key
cidr_block = var.private_subnet_cidrs[each.value]
tags = merge(local.tags, { Name = “${var.name}-private-${each.key}” })
}