<1> 작업용 서버 1대 설치
<2> 테라폼 설치
<3> 코드 다운 로드
<4> 테라폼으로 vpc 생성하기
<5> 참고 사이트
<1> 작업용 서버 1대 설치
1
Sever > 서버 생성 > centos 7.8 > 새로운 공인 IP 할당으로 변경 > 새로운 인증키 생성
teraform1 > teraform1.pem
2
서버 관리 및 설정 변경 > 관리자 비밀번호 확인 >
3
서버 > ACG에서 ssh 허용
아웃 바운드 허용 필요
https://brunch.co.kr/@topasvga/1399
4
putty로 로그인
root
<2> 테라폼 설치
1
다운로드 사이트
https://www.terraform.io/downloads.html
wget https://releases.hashicorp.com/terraform/1.0.9/terraform_1.0.9_linux_amd64.zip
2
unzip terraform_1.0.9_linux_amd64.zip && mv terraform /usr/bin
[root@s17 cb6 b02653 ~]# terraform version
Terraform v1.0.9
<3> 코드 다운 로드
사이트
https://github.com/NaverCloudPlatform/terraform-provider-ncloud/tree/master/examples/vpc/scenario02
1
샘플 파일 다운로드하기
wget https://github.com/NaverCloudPlatform/terraform-provider-ncloud/archive/refs/heads/master.zip
unzip master.zip
2
샘플 경로 가서 확인하기
[root@s17 cb6 b02653 scenario01]# pwd
/root/terraform-provider-ncloud-master/examples/vpc/scenario01
3
파일 확인 3개
[root@s17 cb6 b02653 scenario01]# ls
main.tf variables.tf versions.tf
4
마이페이지 > 인증키 관리에서 키 확인에서
access_key와 secret_key를 확인해 복사해 놓는다.
5
[root@s17 cb6 b02653 scenario01]# ls
main.tf terraform.tfstate variables.tf versions.tf
[root@s17 cb6 b02653 scenario01]#
[root@s17 cb6 b02653 scenario01]# more versions.tf
terraform {
required_providers {
ncloud = {
source = "navercloudplatform/ncloud"
}
}
required_version = ">= 1.0.9"
}
// required_version = ">= 1.0.9" = 테라폼 버전 입력
6
[root@s17 cb6 b02653 scenario01]# more variables.tf
variable name_scn01 {
default = "tf-scn01"
}
variable client_ip {
default = "210.1.1.1"
}
variable access_key {
default = "sQqP"
}
variable secret_key {
default = "iOFMFRfO"
}
// default = "210.1.1.1"는 내 pc ip = ssh로 원격 접속할 때 허용하는 ip
// access_key 입력
// secret_key 입력
7
[root@s17 cb6 b02653 scenario01]# more 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)
}
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}"
}
}
}
// vpc 설정하는 내용들
resource "ncloud_vpc" "vpc_scn_01" {
ipv4_cidr_block = "10.0.0.0/16"
subnet = cidrsubnet(ncloud_vpc.vpc_scn_01.ipv4_cidr_block, 8, 1)
/16에 + 8 = /24
10.0.1.0/24이다.
참고
Cidr subnet 기능
https://www.terraform.io/docs/language/functions/cidrsubnet.html
<4> 테라폼으로 vpc 생성하기
terraform init
terraform plan
terraform apply
Enter a value:
yes
// 서버 이미지가 없어 안된다고 에러 나온다. 해당 부분은 main.tf에서 삭제 후 재 실행
// vpc는 만들어진다.
// 이미지는 나중에 수정하면 서버도 만들어질 거 같다.
콘솔 로그인해서 확인
1
VPC = tf-scn01
2
subnet = tf-scn01
3
Public route table
0.0.0.0/0 IGW
4
private route table
없음
<6> 참고 사이트
참고
https://blog.naver.com/n_cloudplatform/222189643849
https://registry.terraform.io/providers/NaverCloudPlatform/ncloud/latest/docs
테라폼으로 AWS VPC생성 하기
https://brunch.co.kr/@topasvga/780
https://brunch.co.kr/@topasvga/2420
감사합니다.