본문 바로가기

테라폼으로 NCP 서버 인프라 구축하기

민이(MInE) 2024. 11. 19.
반응형

목차

  1. 프로젝트 구조
  2. 초기 설정
  3. 네트워크 구성
  4. 서버 구성
  5. 실행 방법
  6. 주의사항

프로젝트 구조

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

주의사항

  1. 보안 키 관리
    ```hcl

    terraform.tfvars는 .gitignore에 추가

*.tfvars

2. **리소스 삭제**
```bash
# 모든 리소스 삭제
terraform destroy
  1. 비용 관리
  • 퍼블릭 IP는 과금 대상
  • 사용하지 않는 리소스 즉시 삭제
  1. 상태 파일 관리
    # 상태 파일 백업
    terraform state pull > backup.tfstate

트러블슈팅

2. 리소스 생성 실패

# 상태 초기화
terraform init -reconfigure

# 강제 적용
terraform apply -auto-approve

마치며

이 구성은 기본적인 웹 서버 환경을 구축하는 예제입니다. 실제 운영 환경에서는 다음 사항들을 추가로 고려해야 합니다:

  1. 백업 전략
  2. 모니터링 설정
  3. 고가용성 구성
  4. 보안 강화

 

참고 자료

 

https://www.didim365.com/blog/terraform%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EB%84%A4%EC%9D%B4%EB%B2%84-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%ED%94%8C%EB%9E%AB%ED%8F%BCncp%EC%97%90%EC%84%9C-vpc-%ED%99%98%EA%B2%BD/

 

Terraform을 이용하여 네이버 클라우드 플랫폼(NCP)에서 VPC 환경을 구성하는 방법 - 디딤365

안녕하세요, 디딤365입니다. 이번 포스팅에서는 HashiCorp사에서 Go언어로 개발한 인프라스트럭처 관리 오픈소스인 Terraform을 이용하여 네이버 클라우드 플랫폼(이하 NCP)에서 VPC 환경을 구성하는 방

www.didim365.com

 

반응형

댓글