1
명령서버 1대 만들기
콘솔로 우선 VPC 1개, Pub1 subnet 1개 네트워크 생성
로키 리눅스 1 대 생성 - 로그인
테라폼 사용을 위한 툴 설치 - 아래 참조 1 링크에 4번까지 진행
// 네이버 클라우드는 VPC는 기본 3개 제공한다.
// 생성 후 VPC 삭제하며 테스트하자.
VPC
10.0.0.0/16
Pub1
10.0.1.0/24
또는
MAC pc 이면
테라폼 사용을 위한 툴 설치 - 아래 링크에 4번까지 진행
2
참조 1
https://brunch.co.kr/@topasvga/3943
3
소스
cd
wget https://github.com/NaverCloudPlatform/terraform-provider-ncloud/archive/refs/heads/master.zip
unzip master.zip
cd /root/terraform-provider-ncloud-main/examples/vpc/scenario01
4
# 설정 파일이 3개이다.
[root@ngame-web01-dev 2]# ls
main.tf variables.tf versions.tf
[root@ngame-web01-dev scenario01]#
[root@ngame-web01-dev scenario01]# more *.tf
::::::::::::::
main.tf
::::::::::::::
# VPC > User scenario > Scenario 1. Single Public Subnet
# https://docs.ncloud.com/ko/networking/vpc/vpc_userscenario1.html
provider "ncloud" {
support_vpc = true
region = "KR"
access_key = var.access_key
secret_key = var.secret_key
}
resource "ncloud_login_key" "key_scn_01" {
key_name = var.name_scn01
}
resource "ncloud_vpc" "vpc_scn_01" {
name = var.name_scn01
ipv4_cidr_block = "10.0.0.0/16"
}
resource "ncloud_subnet" "subnet_scn_01" {
name = var.name_scn01
vpc_no = ncloud_vpc.vpc_scn_01.id
subnet = cidrsubnet(ncloud_vpc.vpc_scn_01.ipv4_cidr_block, 8, 1)
// 10.0.1.0/24
zone = "KR-2"
network_acl_no = ncloud_vpc.vpc_scn_01.default_network_acl_no
subnet_type = "PUBLIC"
// PUBLIC(Public) | PRIVATE(Private)
}
resource "ncloud_server" "server_scn_01" {
subnet_no = ncloud_subnet.subnet_scn_01.id
name = var.name_scn01
server_image_product_code = "SW.VSVR.OS.LNX64.CNTOS.0703.B050"
login_key_name = ncloud_login_key.key_scn_01.key_name
}
resource "ncloud_public_ip" "public_ip_scn_01" {
server_instance_no = ncloud_server.server_scn_01.id
description = "for ${var.name_scn01}"
}
locals {
scn01_inbound = [
[1, "TCP", "0.0.0.0/0", "80", "ALLOW"],
[2, "TCP", "0.0.0.0/0", "443", "ALLOW"],
[3, "TCP", "${var.client_ip}/32", "22", "ALLOW"],
[4, "TCP", "${var.client_ip}/32", "3389", "ALLOW"],
[5, "TCP", "0.0.0.0/0", "32768-65535", "ALLOW"],
[197, "TCP", "0.0.0.0/0", "1-65535", "DROP"],
[198, "UDP", "0.0.0.0/0", "1-65535", "DROP"],
[199, "ICMP", "0.0.0.0/0", null, "DROP"],
]
scn01_outbound = [
[1, "TCP", "0.0.0.0/0", "80", "ALLOW"],
[2, "TCP", "0.0.0.0/0", "443", "ALLOW"],
[3, "TCP", "${var.client_ip}/32", "1000-65535", "ALLOW"],
[197, "TCP", "0.0.0.0/0", "1-65535", "DROP"],
[198, "UDP", "0.0.0.0/0", "1-65535", "DROP"],
[199, "ICMP", "0.0.0.0/0", null, "DROP"]
]
}
resource "ncloud_network_acl_rule" "network_acl_01_rule" {
network_acl_no = ncloud_vpc.vpc_scn_01.default_network_acl_no
dynamic "inbound" {
for_each = local.scn01_inbound
content {
priority = inbound.value[0]
protocol = inbound.value[1]
ip_block = inbound.value[2]
port_range = inbound.value[3]
rule_action = inbound.value[4]
description = "for ${var.name_scn01}"
}
}
dynamic "outbound" {
for_each = local.scn01_outbound
content {
priority = outbound.value[0]
protocol = outbound.value[1]
ip_block = outbound.value[2]
port_range = outbound.value[3]
rule_action = outbound.value[4]
description = "for ${var.name_scn01}"
}
}
}
::::::::::::::
variables.tf
::::::::::::::
variable name_scn01 {
default = "tf-scn01"
}
variable client_ip {
default = "2.2.2.2"
}
variable access_key {
default = "ncp_iam_BboCA"
}
variable secret_key {
default = "ncp_iam_BPKZ7Gt"
}
::::::::::::::
versions.tf
::::::::::::::
terraform {
required_providers {
ncloud = {
source = "navercloudplatform/ncloud"
}
}
required_version = ">= 0.13"
}
5
# 변수 파일 = 값을 넣어야 한다!!!!
more variables.tf
variable name_scn01 {
default = "tf-scn01"
}
variable client_ip {
default = "YOUR_CLIENT_IP"
}
variable access_key {
default = "YOUR_ACCESS_KEY"
}
variable secret_key {
default = "YOUR_SECRET_KEY"
}
# 변수
변수 처리하는데 서브넷 계산법을 알아야 한다.
cidrsubnet(prefix, newbits, netnum) 계산법?
cidrsubnet(prefix, newbits, netnum)
prefix ending in /16 and a newbits value of 4, the resulting subnet address will have length /20.
1)
ipv4_cidr_block = "10.0.0.0/16"
subnet = cidrsubnet(ncloud_vpc.vpc_scn_01.ipv4_cidr_block, 8, 1)
/16에 8을 더해 24비트로 결과가 나온다.
1로 시작한다.
10.0.1.0/24
16+8 = 24
1로 시작
2)
/21
21 3 2
21+3 = 24
2로 시작
10.0.2.0 /24 로 만들어짐
6
실행
terraform init
terraform plan
terraform apply -auto-approve
7
결과
tf-scn01
10.0.0.0/16
tf-scn01
10.0.1.0/24
KR-2
Public
서버 이름
tf-scn01
10.0.1.6
223.130.141.61
// os가 구 버전인 centos 7.5로 생성됨. 최신 이미지로 변경 필요 (확인중)
ACG
tf-scn01-default-acg
TCP0.0.0.0/0 3389
TCP0.0.0.0/0 22
10.0.0.0/16
8
리소스 삭제
terraform destroy -auto-approve
1
https://www.youtube.com/watch?v=cP2IWGepwV4
2
https://www.youtube.com/watch?v=e_8ZtT_d0hg
4
테라폼으로 네트워크 만들기
https://brunch.co.kr/@topasvga/3594
다음
https://brunch.co.kr/@topasvga/4058
감사합니다.