본문 바로가기
CSP (Cloud Service Provider)/AWS

AWS Terraform 3tier (1)

by BTC_신지웅 2022. 12. 19.

베하~~안녕하세요 BETTERMONDAY 입니다! 이번 포스팅 부터는 테라폼을 사용하여 AWS에서 3tier 를 구축할 것입니다.

코드를 정리해두시면 굉장히 쏠쏠하니 다같이 열심히 해봅시다! 그럼~슈우우웃~!


0. 아키텍쳐

저희가 생성해볼 인프라의 아키텍쳐는 다음과 같습니다.

 

1. VPC 및 IP, Gateway 생성

먼저 VPC 입니다. 인프라를 생성하기 위해선 먼저 VPC가 있어야겠죠? 

아주 간단하게 다음과 같은 코드로 생성 가능합니다.

resource "aws_vpc" "tier" {
  cidr_block = "10.0.0.0/16"

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

}

위와 같이 10.0.0.0/16 대역에 VPC를 생성해주고,쉬운 관리를 위하여 태그까지 달아 주도록 하겠습니다.

 

그 다음은 외부통신을 위한 InternetGateway 생성입니다.

또한 Bastion에 달아줄 EIP가 필요하기때문에 같이 생성해주겠습니다.

WEB,WAS가 yum등 설치가 필요하기 때문에 NatGateway도 생성해주겠습니다.

#Internet GateWay 생성
resource "aws_internet_gateway" "tier-igw" {
  vpc_id = aws_vpc.tier.id
  tags = {
    "Name" = "tier-igw"
  }
}

#eip 생성
resource "aws_eip" "tier-eip" {
  vpc = true
  tags = {
    "Name" = "tier-eip"
  }
}

#Nat Gateway 생성
resource "aws_nat_gateway" "tier-nat" {
  allocation_id = aws_eip.tier-eip.id
  subnet_id     = aws_subnet.public-a.id
  tags = {
    "Name" = "tier-nat"
  }
}

2.Subnet 생성

Bastion, WEB, WAS, DB는 각각의 서브넷이 필요합니다. 따라서 생성해주도록 하겠습니다.

#=============================================public=========================================#

#Public Subnet a 생성 (Nat,Bastion)
resource "aws_subnet" "public-a" {
  vpc_id            = aws_vpc.tier.id
  cidr_block        = "10.0.1.0/24"
  availability_zone = "ap-northeast-2a"

  tags = {
    "Name" = "tier-public-a"
  }

}

#Public Subnet b 생성 
resource "aws_subnet" "public-c" {
  vpc_id            = aws_vpc.tier.id
  cidr_block        = "10.0.2.0/24"
  availability_zone = "ap-northeast-2c"

  tags = {
    "Name" = "tier-public-c"
  }

}

#===================================================web======================================#

#Web Subnet a 생성 (Web-a)
resource "aws_subnet" "web-sub-a" {
  vpc_id            = aws_vpc.tier.id
  cidr_block        = "10.0.3.0/24"
  availability_zone = "ap-northeast-2a"

  tags = {
    "Name" = "tier-web-sub-a"
  }

}
#Web Subnet b 생성 (Web-c)
resource "aws_subnet" "web-sub-c" {
  vpc_id            = aws_vpc.tier.id
  cidr_block        = "10.0.4.0/24"
  availability_zone = "ap-northeast-2c"

  tags = {
    "Name" = "tier-web-sub-c"
  }

}

#=============================================was=========================================#

#Was Subnet a 생성 (Was)
resource "aws_subnet" "was-sub-a" {
  vpc_id            = aws_vpc.tier.id
  cidr_block        = "10.0.5.0/24"
  availability_zone = "ap-northeast-2a"

  tags = {
    "Name" = "tier-was-sub-a"
  }
}

#Was Subnet b 생성 (Was)
resource "aws_subnet" "was-sub-c" {
  vpc_id            = aws_vpc.tier.id
  cidr_block        = "10.0.6.0/24"
  availability_zone = "ap-northeast-2c"

  tags = {
    "Name" = "tier-was-sub-c"
  }
}
#=========================================DB==============================================#

#DB Subnet a 생성 (DB)
resource "aws_subnet" "db-sub-a" {
  vpc_id            = aws_vpc.tier.id
  cidr_block        = "10.0.7.0/24"
  availability_zone = "ap-northeast-2a"

  tags = {
    "Name" = "tier-db-sub-a"
  }
}

#DB Subnet b 생성 (DB)
resource "aws_subnet" "db-sub-c" {
  vpc_id            = aws_vpc.tier.id
  cidr_block        = "10.0.8.0/24"
  availability_zone = "ap-northeast-2c"

  tags = {
    "Name" = "tier-db-sub-c"
  }
}

이번 주 해볼 내용은 여기까지입니다!  코드를 작성하기 전 프로바이더 설정이나, AWS계정을 연결시키는 작업또한 필요하지만, 이 부분은 테라폼을 사용하기위해 너무나 기초 작업이기 때문에 다루지 않았습니다. 

다음 포스팅에서는 SecurityGroup생성에 대하여 다뤄보도록 하겠습니다. 감사합니다! 베바~~~~~~~~

'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글

AWS Terraform 3tier (3)  (0) 2022.12.19
AWS Terraform 3tier (2)  (0) 2022.12.19
AWS Outposts  (0) 2022.12.19
[AWS] CloudWatch  (0) 2022.12.17
AWS Shield  (0) 2022.12.16

댓글