brunch

4-2. NHN 클라우드 - 데이터 소스-서버생성

by Master Seo


# 서버 생성하자

# 보안 그룹 적용하자




1

# 서버 생성


#compute

# 네트워크 추가, 블록 스토리지 추가된 인스턴스 생성

resource "nhncloud_compute_instance_v2" "web_server" {

name = "web_server"

key_pair = "seo1"

flavor_id = data.nhncloud_compute_flavor_v2.web_server.id

security_groups = ["default"]

network {

port = nhncloud_networking_port_v2.port_1.id

}

block_device {

uuid = data.nhncloud_images_image_v2.ubuntu_22.id

source_type = "image"

destination_type = "volume"

boot_index = 0

volume_size = 20

delete_on_termination = true

}

user_data = "#include https://kr2-api-object-storage.nhncloudservice.com/v1/AUTH_cf5a0f8add884a61a2f047ff8c16c4bb/real-iac-terraform/terra-index.txt"

}

resource "nhncloud_networking_port_v2" "port_1" {

name = "tf_port_1"

network_id = nhncloud_networking_vpc_v2.terraform_vpc.id

fixed_ip {

subnet_id = nhncloud_networking_vpcsubnet_v2.public_subnet.id

}

}

#data

data "nhncloud_compute_flavor_v2" "web_server"{

name = "m2.c1m2"

}

data "nhncloud_images_image_v2" "ubuntu_22" {

name = "Ubuntu Server 22.04.5 LTS (2025.02.25)"

}

# network

#VPC 생성 리소스 블록

resource "nhncloud_networking_vpc_v2" "terraform_vpc" {

name = "terraform_vpc"

cidrv4 = "10.0.0.0/16"

}

resource "nhncloud_networking_vpcsubnet_v2" "public_subnet" {

name = "public_subnet"

vpc_id = nhncloud_networking_vpc_v2.terraform_vpc.id

cidr = "10.0.1.0/24"

}

resource "nhncloud_networking_vpcsubnet_v2" "private_subnet" {

name = "private_subnet"

vpc_id = nhncloud_networking_vpc_v2.terraform_vpc.id

cidr = "10.0.2.0/24"

}

resource "nhncloud_networking_routingtable_v2" "private_rt" {

name = "private_rt"

vpc_id = nhncloud_networking_vpc_v2.terraform_vpc.id

}

# privider

# Define required providers

terraform {

required_version = ">= 1.0.0"

required_providers {

nhncloud = {

source = "nhn-cloud/nhncloud"

version = "1.0.2"

}

}

}

provider "nhncloud" {

user_name = var.nhncloud_info["user_name"]

tenant_id = var.nhncloud_info["tenant_id"]

password = var.passwd

auth_url = var.nhncloud_info["auth_url"]

region = var.region["kr2"]

}

# var

variable nhncloud_info {

type =map(string)

default = {

user_name = "topasvga@naver.com"

tenant_id = "0ccc9863e23247e78a9fb6ad32d7cf43"

password = "test"

auth_url = "https://api-identity-infrastructure.nhncloudservice.com/v2.0"

}

}

variable passwd {

type = string

default = "test"

sensitive =true

}

variable region {

type = map(string)

default = {

kr1 = "KR1"

kr2 = "KR2"

}

}




2

# 보안 그룹 생성 , network.tf

# compute.tf 수정 - security_groups = ["default","web-sg"]



# network

#VPC 생성 리소스 블록

resource "nhncloud_networking_vpc_v2" "terraform_vpc" {

name = "terraform_vpc"

cidrv4 = "10.0.0.0/16"

}

resource "nhncloud_networking_vpcsubnet_v2" "public_subnet" {

name = "public_subnet"

vpc_id = nhncloud_networking_vpc_v2.terraform_vpc.id

cidr = "10.0.1.0/24"

}

resource "nhncloud_networking_vpcsubnet_v2" "private_subnet" {

name = "private_subnet"

vpc_id = nhncloud_networking_vpc_v2.terraform_vpc.id

cidr = "10.0.2.0/24"

}

resource "nhncloud_networking_routingtable_v2" "private_rt" {

name = "private_rt"

vpc_id = nhncloud_networking_vpc_v2.terraform_vpc.id

}

resource "nhncloud_networking_secgroup_v2" "web-sg" {

name = "web-sg"

}

resource "nhncloud_networking_secgroup_rule_v2" "web_sg-rule" {

direction = "ingress"

ethertype = "IPv4"

protocol = "tcp"

port_range_min = 80

port_range_max = 80

remote_ip_prefix = "0.0.0.0/0"

security_group_id = nhncloud_networking_secgroup_v2.web-sg.id

}

# compute

# 네트워크 추가, 블록 스토리지 추가된 인스턴스 생성

resource "nhncloud_compute_instance_v2" "web_server" {

name = "web_server"

key_pair = "seo1"

flavor_id = data.nhncloud_compute_flavor_v2.web_server.id

# security_groups = ["default"]

security_groups = ["default","web-sg"]

network {

port = nhncloud_networking_port_v2.port_1.id

}

block_device {

uuid = data.nhncloud_images_image_v2.ubuntu_22.id

source_type = "image"

destination_type = "volume"

boot_index = 0

volume_size = 20

delete_on_termination = true

}

user_data = "#include https://kr2-api-object-storage.nhncloudservice.com/v1/AUTH_cf5a0f8add884a61a2f047ff8c16c4bb/real-iac-terraform/terra-index.txt"

}

resource "nhncloud_networking_port_v2" "port_1" {

name = "tf_port_1"

network_id = nhncloud_networking_vpc_v2.terraform_vpc.id

fixed_ip {

subnet_id = nhncloud_networking_vpcsubnet_v2.public_subnet.id

}

}




# 공인 ip


#floating IP 생성

resource "nhncloud_networking_floatingip_v2" "fip_01" {

pool = "Public Network"

}

#floating IP 연결

resource "nhncloud_networking_floatingip_associate_v2" "fip_associate" {

floating_ip = nhncloud_networking_floatingip_v2.fip_01.address #생성한 Floating IP

port_id = nhncloud_networking_port_v2.port_1.id #floating IP 연결한 네트워크 포트 id 값 가져오기

}




공인ip로 접속


300 ip.png


매거진의 이전글4. NHN 클라우드 - 데이터 소스