Terraform 설치
Rocky Linux는 테라폼 홈페이지에서, 아마존 리눅스로 설치합니다.
Install | Terraform | HashiCorp Developer
sudo yum install -y yum-utils shadow-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
sudo yum -y install terraform
terraform -v
Terraform v1.9.8
on linux_amd64
테라폼 버전은 1.9.8입니다. 이제 잘 사용이 됩니다.
예시 네이버클라우드 provider 설치
네이버클라우드 제공 provider를 사용합니다.
압축을 해제합니다.
폴더 이름이 terraform-provider-ncloud-main 입니다. 이 디렉토리로 들어갑니다.
이 파일이 예시용 파일이다보니, examples 내부에 멋진 스크립트 파일이 있습니다.
테라폼 파일 세가지가 있습니다. 하나씩 살펴보겠습니다.
VPC
VPC 설정은 다음과 같습니다. 액세스키와 시크릿키는 각자의 것을 variables.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"
}
여기서 또 봐야할 것이 subnet의 CIDR 이라는 것의 계산법입니다.
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)
}
원문을 살펴보면 다음과 같습니다.
cidrsubnet - Functions - Configuration Language | Terraform | HashiCorp Developer
cidrsubnet(prefix, newbits, netnum)
- prefix: The network address prefix in CIDR notation (e.g., "10.1.2.0/24").
- newbits: The number of additional bits to extend the prefix. For example, if the prefix ends in /16 and newbits is 4, the resulting subnet address will have a length of /20.
subnet = cidrsubnet(ncloud_vpc.vpc_scn_01.ipv4_cidr_block, 8, 1)
// 10.0.1.0/24
이 예시에서, ipv4_cidr_block은 "10.0.0.0/16"입니다. newbits는 8, netnum은 1입니다.
계산 과정은 기본 CIDR 블록 (10.0.0.0/16)은 16비트의 네트워크 부분을 가집니다. 여기에 8비트를 추가하여 (16 + 8 = 24) 새로운 서브넷의 prefix 길이를 24로 만듭니다. netnum 1은 두 번째 서브넷을 의미합니다 (0부터 시작).
그러면 결과적으로 "10.0.1.0/24" 서브넷이 생성됩니다.
variables.tf 일부를 살펴봅니다. client ip, access key, secret key에 각각 본인의 IP와 인증키 정보를 입력합니다.
variable name_scn01 {
default = "tf-graph01"
}
variable client_ip {
default = "YOUR_CLIENT_IP"
}
variable access_key {
default = "YOUR_ACCESS_KEY"
}
variable secret_key {
default = "YOUR_SECRET_KEY"
}
versions.tf 파일은 이 네이버클라우드 프로바이더의 버전을 명시해주었네요.
terraform {
required_providers {
ncloud = {
source = "navercloudplatform/ncloud"
}
}
required_version = ">= 0.13"
}
이것을 모아서 이제 terraform 명령어를 사용해보겠습니다.
terraform init
terraform plan
terraform apply
terraform plan에서 에러가 바랭합니다.
공공계정은 안되는 것이에요! 민간계정으로 하면 아래와 같습니다.
쉽지는 않은데, 일단 가능하다는 것을 확인했습니다.
서브넷 반납이 됩니다.
문제는 10.0.0.192/26 이렇게 나오는게 신기하네요.
이렇게 subnet, server를 생성해보고 다시 삭제도 해보았습니다. 인프라 자동화에 terraform이 상당히 편리하게 작용할 것으로 보입니다.
다음에는 Ansible도 활용해보고 NKS 구축까지 해보겠습니다.
'IaC > Terraform' 카테고리의 다른 글
[Terraform] 테라폼과 네이버클라우드 연동해보기 (3) | 2024.11.13 |
---|---|
[Terraform] 네이버클라우드 서버 만들기 계획 (0) | 2024.11.12 |
[Terraform] 네이버클라우드와 테라폼 이야기(1) (0) | 2024.11.10 |