테라폼 코드는 VScode에서 쓸텐데,
사전에 아래 사진 처럼 마켓플레이스로 테라폼을 추가해놓기만 하면 된다.

1. 먼저 VPC를 만든다.
앞으로도 계속 테라폼 공식문서를 보면서 코드를 작성 할테니, 이 사이트는 꼭 참조하길 바란다!
cidr는 192.168.0.0대를 사용하였다.
resource "aws_vpc" "vpc" { cidr_block = "192.168.0.0/16" instance_tenancy = "default" enable_dns_hostnames = true enable_dns_support = true tags = { "Name" = "vpc" } }
2. 나중에 필요할 키를 지금 생성해본다. 이를 위해 cmd 창에서 ssh-keygen 명령어를 이용해 키를 만들어야 한다.
cmd창에서 ssh-keygen -m PEM -f [키이름] 라고 치면 된다. 그리고 퍼블릭키와 프라이빗키를 테라폼을 작성하는 tf파일이 있는 폴더로 옮겨 놨다.
resource "aws_key_pair" "honeydew" { key_name = "honeydew" public_key = file("./honeydew.pub") }
3. VPC 내 서브넷 생성
3티어 아키텍쳐를 구축할 것이기 때문에 가용영역 a와 c에 퍼블릭 서브넷, 프라이빗 서브넷을 만든다.
프라이빗 서브넷은 이름을 web, was로 했다.
resource "aws_subnet" "pubsuba" { vpc_id = aws_vpc.vpc.id cidr_block = "192.168.0.0/24" availability_zone = "ap-northeast-2a" tags = { "Name" = "pubsuba" } } resource "aws_subnet" "pubsubc" { vpc_id = aws_vpc.vpc.id cidr_block = "192.168.1.0/24" availability_zone = "ap-northeast-2c" tags = { "Name" = "pubsubc" } } resource "aws_subnet" "weba" { vpc_id = aws_vpc.vpc.id cidr_block = "192.168.2.0/24" availability_zone = "ap-northeast-2a" tags = { "Name" = "weba" } } resource "aws_subnet" "webc" { vpc_id = aws_vpc.vpc.id cidr_block = "192.168.3.0/24" availability_zone = "ap-northeast-2c" tags = { "Name" = "webc" } } resource "aws_subnet" "wasa" { vpc_id = aws_vpc.vpc.id cidr_block = "192.168.4.0/24" availability_zone = "ap-northeast-2a" tags = { "Name" = "wasa" } } resource "aws_subnet" "wasc" { vpc_id = aws_vpc.vpc.id cidr_block = "192.168.5.0/24" availability_zone = "ap-northeast-2c" tags = { "Name" = "wasc" } }
4. terraform init
새롭게 테라폼 코드를 입력했으니 terraform init을 해줘야 하고, 이건 destroy 할 때까지 한 번만 하면 된다. init 명령어는 멱등성을 제공해서 여러번 실행해도 무방하다.

5. terraform plan
제대로 변경/생성 하기 전에 테라폼이 수행할 작업을 확인할 수 있다. 여기서 1차적으로 오류를 거를 수 있으나, 뒤이어 나올 apply에서 추가적인 오류가 검출될 수 있다.

6. terraform apply
이 명령어로 바로 실행하고 코드를 통해 입력한 리소스를 배포하게 된다.

6-1. apply가 성공적으로 완료되면 아래와 같이 나온다.

7. AWS 콘솔로 확인해보자.
테라폼으로 vpc와 서브넷을 만들었으니 콘솔화면으로 확인할 수 있다.


'OPS' 카테고리의 다른 글
[Terraform실습] 보안그룹 (0) | 2022.01.08 |
---|---|
[Terraform실습] 인터넷게이트웨이 & NAT게이트웨이 (0) | 2022.01.07 |
[Terraform실습] 준비 및 설치 (0) | 2022.01.05 |
[Terraform] IAM 계정 생성 (0) | 2022.01.04 |
[AWS실습] VPC peering (0) | 2022.01.03 |