[AWS_Terraform]01_초기 설정 및 VPC, Subnet 생성
요번 포스팅에서는 AWS를 사용하기 위한 초기 세팅을 해보겠습니다. 이전 포스팅에서 진행한 CLI 환경 구성이 선행되어야 하니, 필요하시면 아래 포스팅을 참고해주세요.
[실습환경구성]AWS_CLI 구성
안녕하세요! 오늘은 Terraform을 활용하기 위하여 AWS_CLI를 구성해보겠습니다.총 목표는 테라폼 코드를 활용하여 네트워크 인프라 구성, 이후 DB 서버 연동, Auto Scailing까지 진행해보겠습니다.1. AWS CL
boan-stu.tistory.com
또한, 제가 작성한 코드는 대부분 Terraform에서 제공하는 Registry 사이트를 참고하고 있습니다. 참고할 자료를 원하시는 분들은 아래의 URL에서 [Browse Providers] → [코드를 보고 싶은 클라우드 플랫폼] → [Documentation] 을 통하여 확인하실 수 있습니다.
Terraform Registry
registry.terraform.io
1. 초기 준비
1.1 처음으로, 코드 및 기타 필요한 소스들을 모아둘 폴더를 만들어준 후, RSA Key를 생성해주겠습니다. 저의 경우에는 폴더를 ( D:\04_IaC\02_aws\01_prod ) 의 형식으로 생성했습니다.
- Win + R 키를 통하여 실행창에 cmd 입력, 아래의 커맨드를 통하여 RSA 키 쌍을 생성해주세요.
ssh-keygen -b 2048 -m PEM -t rsa -N ""
- 아래와 같이 키 쌍이 생성됐음을 볼 수 있습니다. 이 키는 초기 세팅 시에 생성 및 지정한 후, 앞으로 진행될 Instance 생성 후 접근하는 등의 용도로 사용할 예정입니다.
- id_rsa : 개인키 / SSH를 통해 인증하는 용도로 사용
- id_rsa.pub : 공개키 / SSH를 통해 인증되는 용도로 사용
1.2 이제 초기 코드를 작성하겠습니다. 위에 언급한 소스들을 모아둘 폴더 안에 01_init.tf 의 이름으로 파일을 생성해주세요. 참고로, 저는 Vscode를 사용해서 작성하겠습니다.
- 이후 아래 코드를 작성해줍니다.
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = var.region
}
resource "aws_key_pair" "twcha_key" {
key_name = "twcha-key.pub"
public_key = file("C:/Users/secu22/.ssh/id_rsa.pub")
}
- 저는 region 이라는 변수를 등록하여 var.region 으로 코드를 작성하였습니다. 편의에 따라 저와 같이 변수를 등록 후 사용, 혹은 “ap-northeast-2” 로 작성해주시면 됩니다.
variable "region" {
type = string
default = "ap-northeast-2"
}
- 이후 cmd 창을 연 후, 경로를 해당 코드가 있는 폴더로 이동해줍니다. 이후, terraform init 명령어를 통하여 초기화를 진행해줍니다. 아래 화면과 같이 보인다면 성공입니다!
2. VPC 및 Subnet 생성
2.1 저는 요번에 VPC는 10.0.0.0/16 네트워크를 사용할 예정이며, Subnet은 다음 그림과 같습니다.
- VPC : AWS에서 사용자에게 제공하는 가상 네트워크 환경
- Subnet : VPC 내에서 IP 주소 범위를 나눈 단위
2.2 이에 해당하는 코드는 다음과 같습니다. 또한, 이전 var.tf 변수 선언 파일에 cidr 변수를 선언, default 값으로 “10.0.0.0/16” 값을 부여하였습니다.
variable "region" {
type = string
default = "ap-northeast-2"
}
variable "cidr" {
type = string
default = "10.0.0.0/16"
}
02_vpc.tf
resource "aws_vpc" "twcha_vpc" {
cidr_block = var.cidr
instance_tenancy = "default"
enable_dns_hostnames = true
tags = {
name = "twcha-vpc"
}
}
output "vpc-id" {
value = aws_vpc.twcha_vpc.id
}
output "owner-id" {
value = aws_vpc.twcha_vpc.owner_id
}
03_sub.tf
resource "aws_subnet" "twcha_puba" {
vpc_id = aws_vpc.twcha_vpc.id
cidr_block = "10.0.0.0/24"
availability_zone = "${var.region}a"
tags = {
Name = "twcha-puba"
}
}
resource "aws_subnet" "twcha_pubc" {
vpc_id = aws_vpc.twcha_vpc.id
cidr_block = "10.0.1.0/24"
availability_zone = "${var.region}c"
tags = {
Name = "twcha-pubc"
}
}
resource "aws_subnet" "twcha_pria" {
vpc_id = aws_vpc.twcha_vpc.id
cidr_block = "10.0.2.0/24"
availability_zone = "${var.region}a"
tags = {
Name = "twcha-pria"
}
}
resource "aws_subnet" "twcha_pric" {
vpc_id = aws_vpc.twcha_vpc.id
cidr_block = "10.0.3.0/24"
availability_zone = "${var.region}c"
tags = {
Name = "twcha-pric"
}
}
resource "aws_subnet" "twcha_dba" {
vpc_id = aws_vpc.twcha_vpc.id
cidr_block = "10.0.4.0/24"
availability_zone = "${var.region}a"
tags = {
Name = "twcha-dba"
}
}
resource "aws_subnet" "twcha_dbc" {
vpc_id = aws_vpc.twcha_vpc.id
cidr_block = "10.0.5.0/24"
availability_zone = "${var.region}c"
tags = {
Name = "twcha-dbc"
}
}
3. 설정 적용 및 확인
3.1 이제 설정한 파일을 적용시켜 보겠습니다. CMD 창을 연 후, 파일의 경로로 이동, ‘terraform plan’ 커맨드를 이용하여 적용될 사항을 눈으로 확인해주세요.
- 문제가 없으시다면 아래와 같은 화면을 확인하실 수 있습니다. 이후 적용하시려면, ‘terraform apply’ 커맨드를 사용해주세요. 여기서 —auto-approve 옵션은 자동으로 yes를 해주는 옵션인데, 단 세글자를 치지 않기 위해서 저 긴 문장을 써야하는 아이러니한 상황이 발생합니다.
- 잘 진행하셨다면, VPC 대시보드에 서브넷이 잘 생성된 것을 보실 수 있습니다. 이후, 진행 상황을 되돌리기 위하여, ‘terraform destroy’ 커맨드를 통하여 리소스를 삭제해주겠습니다.