테라폼으로 NCP 서버 인프라 구축하기
반응형
목차
프로젝트 구조
project/
├── provider.tf # NCP 프로바이더 설정
├── variables.tf # 변수 정의
├── terraform.tfvars # 실제 변수값
├── vpc.tf # VPC 및 서브넷 설정
├── security.tf # 보안 설정
├── server.tf # 서버 설정
└── outputs.tf # 출력 설정
초기 설정
프로바이더 설정 (provider.tf)
terraform {
required_providers {
ncloud = {
source = "NaverCloudPlatform/ncloud"
}
}
required_version = ">= 0.13"
}
provider "ncloud" {
access_key = var.access_key
secret_key = var.secret_key
region = var.region
site = "public"
support_vpc = true
}
변수 설정 (variables.tf & terraform.tfvars)
# variables.tf
variable "access_key" {
type = string
}
variable "secret_key" {
type = string
}
variable "region" {
type = string
default = "KR"
}
# terraform.tfvars
access_key = "your_access_key"
secret_key = "your_secret_key"
네트워크 구성
VPC 및 서브넷 설정 (vpc.tf)
resource "ncloud_vpc" "vpc" {
ipv4_cidr_block = "172.16.0.0/16"
name = "my-vpc"
}
resource "ncloud_subnet" "subnet" {
vpc_no = ncloud_vpc.vpc.id
subnet = "172.16.10.0/24"
zone = "KR-2"
network_acl_no = ncloud_vpc.vpc.default_network_acl_no
subnet_type = "PUBLIC"
name = "my-subnet"
usage_type = "GEN"
}
보안 설정 (security.tf)
resource "ncloud_access_control_group" "acg" {
name = "my-acg"
vpc_no = ncloud_vpc.vpc.id
}
resource "ncloud_access_control_group_rule" "acg-rule" {
access_control_group_no = ncloud_access_control_group.acg.id
inbound {
protocol = "TCP"
ip_block = "0.0.0.0/0"
port_range = "80"
description = "HTTP"
}
inbound {
protocol = "TCP"
ip_block = "0.0.0.0/0"
port_range = "22"
description = "SSH"
}
}
서버 구성 (server.tf)
resource "ncloud_server" "server" {
subnet_no = ncloud_subnet.subnet.id
name = "my-server"
server_image_product_code = "SW.VSVR.OS.LNX64.CNTOS.0708.B050"
server_product_code = "SVR.VSVR.HICPU.C002.M004.NET.HDD.B050.G002"
login_key_name = ncloud_login_key.key.key_name
network_interface {
network_interface_no = ncloud_network_interface.nic.id
order = 0
}
}
resource "ncloud_public_ip" "public-ip" {
server_instance_no = ncloud_server.server.id
}
실행 방법
1. 초기화
terraform init
2. 계획 확인
terraform plan
3. 인프라 생성
terraform apply
4. 생성된 자원 확인
terraform show
5. 퍼블릭 IP 확인
terraform output public_ip
주요 설정 설명
1. VPC 구성
- CIDR: 172.16.0.0/16
- 퍼블릭 서브넷: 172.16.10.0/24
- 리전: KR (한국)
- 존: KR-2
2. 보안 설정
- HTTP(80) 포트 개방
- SSH(22) 포트 개방
- 모든 IP 허용 (0.0.0.0/0)
3. 서버 스펙
- OS: CentOS
- 타입: High CPU
- 구성: 2vCPU, 4GB Memory
주의사항
- 보안 키 관리
```hclterraform.tfvars는 .gitignore에 추가
*.tfvars
2. **리소스 삭제**
```bash
# 모든 리소스 삭제
terraform destroy
- 비용 관리
- 퍼블릭 IP는 과금 대상
- 사용하지 않는 리소스 즉시 삭제
- 상태 파일 관리
# 상태 파일 백업 terraform state pull > backup.tfstate
트러블슈팅
2. 리소스 생성 실패
# 상태 초기화
terraform init -reconfigure
# 강제 적용
terraform apply -auto-approve
마치며
이 구성은 기본적인 웹 서버 환경을 구축하는 예제입니다. 실제 운영 환경에서는 다음 사항들을 추가로 고려해야 합니다:
- 백업 전략
- 모니터링 설정
- 고가용성 구성
- 보안 강화
참고 자료
반응형
댓글