반응형
Topic
- terraform으로 AWS VPC/Subnet 구축
사전준비
- AWS 계정
- AWS CLI 설치
- AWS IAM생성
- AWS CLI configure 설정
- terraform 설치
본 블로그에서는 AWS Cloud9을 사용하였습니다.
AWS VPC 아키텍처
작업리스트
- terraform 디렉터리 구조잡기
- terraform 모듈 활용
- terraform 코드작성
- terraform cli로 VPC구축
- AWS management console에서 VPC생성확인
terraform 디렉터리 구조잡기
- 디렉터리 구조는 아래와 같이 minimal하게 잡도록 함
├── main.tf
├── variables.tf
├── outputs.tf
terraform 모듈 활용하기
- terraform모듈 확인 URL : https://registry.terraform.io/
- Browse Providers - AWS 에서 모듈 확인
- 또는 상단의 검색바 이용
- 모듈 사용 방법 예시가 잘 나와있음
main.tf
- Provider에 대한 설정을 커스텀하게 변경
provider "aws" {
#version = "~> 3.22"
region = "ap-northeast-2"
shared_credentials_file = "/Users/test/.aws/credentials"
profile = "default"
}
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
name = var.vpc_name
cidr = var.vpc_cidr
azs = var.vpc_azs
private_subnets = var.private_cidr
public_subnets = var.public_cidr
enable_nat_gateway = true
enable_vpn_gateway = true
tags = {
Terraform = "true"
Environment = "dev"
}
}
variables.tf
variable "vpc_name" {
type = string
default = "my-vpc"
description = "vpc name"
}
variable "vpc_cidr" {
type = string
default = "10.0.0.0/16"
description = "vpc cidr"
}
variable "vpc_azs" {
type = list
default = ["ap-northeast-2a", "ap-northeast-2b", "ap-northeast-2c"]
description = "vpc azs"
}
variable "public_cidr" {
type = list
default = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]
description = "public cidr"
}
variable "private_cidr" {
type = list
default = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
description = "private cidr"
}
outputs.tf
output "vpc_id" {
value = "${module.vpc.vpc_id}"
}
output "nat_public_ips" {
value = "${module.vpc.nat_public_ips}"
}
output "private_subnet_ids" {
value = "${module.vpc.private_subnets}"
}
output "public_subnet_ids" {
value = "${module.vpc.public_subnets}"
}
output "private_routetable_ids" {
value = "${module.vpc.private_route_table_ids}"
}
output "public_routetable_ids" {
value = "${module.vpc.public_route_table_ids}"
}
terraform CLI로 VPC 생성
- terraform 초기설정
terraform init
- terraform 리소스 생성확인
terraform plan
- terraoform 리소스 생성
terraform apply
## Enter a value: yes
terraform CLI로 VPC 삭제
terraform destroy
## Enter a value: yes
AWS Management Console에서 VPC확인
Services - VPC
Wrap Up
- 이와 같이 서비스 모듈을 활용하면 VPC를 쉽게 생성할 수 있습니다.
- 네트워크를 설계에 따라서 서비스 모듈을 어떻게 커스터 마이징 해야하는지도 중요합니다.
- 커스터마이징하기위해 아래와 같이 테라폼에서 제공하는 모듈을 가져와서 활용하면 쉽게 커스터마이징을 하실 수가 있습니다.
- mian.tf 코드에 source = "terraform-aws-modules/vpc/aws" 는 테라폼에서 제공하는 모듈을 terraform init 명령어 이후 아래와 같이 자동으로 가져오게 합니다.
- 이 소스 폴더를 다음과같이 내가 원하는 위치에 복사하여 source = "./modules/vpc" 으로 설정한 뒤 커스텀하게 프로그래밍 하시면됩니다.
반응형
'IT > DevOps' 카테고리의 다른 글
[Docker] 도커 네트워킹 종류 (0) | 2021.06.28 |
---|---|
[Kubernetes] kubectx, kubens 설치 (다중 클러스터, 다중 네임스페이스 전환 툴) (0) | 2021.06.10 |
AWS 에서 EFK스택 구축하기 (0) | 2021.05.27 |
[DevOps] Ansible 설치부터 사용까지 (0) | 2021.05.25 |
IT종사자들을 위한 Mac OS 터미널 커스텀 세팅 (0) | 2020.01.31 |