일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- alibaba cloud
- Cluster
- alibabacloud
- 네이버클라우드
- 쿠버네티스
- CKAD
- RollingUpdate
- IAC
- 시험
- cloud monitor
- k8s
- Naver Cloud
- terraform
- 자동화
- slack app
- kubeadm
- GIT
- slack
- NCP
- argocd
- cloudmonitor
- Kubernetes
- hashicorp
- recreate
- helm
- 알리바바클라우드
- cicd
- Deployment
- 테라폼
- alibaba
- Today
- Total
Room9
Terraform Installation & Configuration 본문

Overview
먼저 테라폼을 통해 프로비저닝을 하기 전에 중요한 개념 하나를 정의하고 가야 앞으로 설치 및 구성해볼 테라폼에 대해 알 수 있을 것 같습니다.
Infrastructure as Code (IaC)
IaC (Infrastructure as Code)는 컴퓨터에서 읽을 수 있는 정의 파일을 사용하여 클라우드 인프라를 관리하고 프로비저닝 하는 프로세스입니다. 즉, 실행 가능한 문서라고 생각하실 수 있습니다. 프로비저닝, 시스템의 변경 및 구성을 진행할 때 반복적으로 사용하는 리소스들이 있습니다. 이런 반복적인 과정들을 모두 코드화 시켜 자동화 및 빠른 구성과 변경을 진행할 수 있습니다. 또한 git, CI/CD와 통합하여 사용 가능하여 인프라 구성단계에서 협업을 가능하게 해 줍니다.
IaC를 가능하게 하는 툴은 Chef, Puppet, AWS CloudFormation, Ansible 등 여러 가지가 있습니다.
그중 오늘 주제인 테라폼은 클라우드 환경에서 강점이 있는 인프라를 프로비저닝을 할 수 있는 툴입니다.
Details
- Terraform
- Terraform 설치 및 구성
- Terraform File 구성
- NCP 인증키 발급 및 구성
- Provider 설치
- 기본 명령어
Terraform
Terraform은 오픈 소스 프로비저닝 도구입니다. Go로 작성된 단일 바이너리로 제공됩니다. Terraform은 크로스 플랫폼이며 Linux, Windows 또는 MacOS에서 실행할 수 있습니다.
Terraform 설치 및 구성
그럼 프로비저닝에 사용할 테라폼을 설치해보도록 하겠습니다. 설치는 매우 간단하게 진행됩니다 Terraform 홈페이지에서 제공하는 Zip 파일을 내려받아 압축을 풀기만 하면 됩니다. 맥이나 리눅스 환경에서는 패키지 매니저를 활용하여 설치도 가능합니다.
$ brew tap hashicorp/tap
$ brew install hashicorp/tap/terraform
https://www.terraform.io/downloads에서 자신의 환경에 맞는 Terraform을 다운로드합니다.
다운로드 이후 terraform 실행 파일을 적절한 위치로 옮겨 주고 해당 위치를 환경변수에 등록하여 사용 준비를 마칩니다.
$ mkdir ~/hashicorp/bin
$ mv terraform ~/hashicorp/bin
$ cd ~/hashicorp/bin
$ echo $(pwd) >> ~/.zshrc
$ source ~/.zshrc
$ terraform version
Terraform v1.1.2
on darwin_amd64
NCP 인증키 발급 및 구성
NCP에 인증하고 리소스를 빌드하기 위해 Terraform은 적절한 자격 증명 세트를 제공하여 봅시다.
각 벤더별로 자격 증명을 사용하여 테라폼과 클라우드 벤더 간 연동이 가능합니다. 여기 글에서는 NCP를 기준으로 진행하겠습니다.
1. 네이버 클라우드 로그인 진행

2.신규 API 인증키 생성

3.인증키쌍 확인

Terraform을 위한 환경변수 설정을 위해 Access Key ID, Secret Key를 사용하게 됩니다.
해당 키를 사용하기 위해 터미널에서 Access Key , Secret Key를 환경변수로 등록하여 줍니다.
export NCLOUD_ACCESS_KEY="XXXXXXXXXXXXXXXXXX"
export NCLOUD_SECRET_KEY="a0XXXXXXXXXXXXXXXXXXXX"
Warning
API 자격증 명정 보는 실수로 공개된 저장소에 노출되거나 복사되면 위험합니다.
자격증명(API 인증키)을 코드에 저장하지 않는 것을 권장합니다.
Terraform File 구성
테라폼의 파일 형태에 대해서 확인해보겠습니다. 파일 형식은 .tf형식으로 끝나게 됩니다. 테라폼이 구동될때 .tf .tfvars 형식의 파일만 읽어서 프로비저닝 되게 됩니다. 디팩토 스탠다드로 사용되는 파일명들은 아래와 같습니다.
- main.tf - 대부분의 코드가 여기에 작성됩니다.
- variables.tf - 사용자 변수를 저장하는 파일입니다.
- output.tf - 테라폼 실행 시에 출력되는 값을 지정하는 파일입니다.
Provider 설치
테라폼은 클라우드 벤더에서 제공하는 API와 통신을 할 수 있도록 설정해줘야 합니다. Provider구성은 클라우드 벤더의 API와 통신을 하기 위한 설정입니다. 위에서 네이버클라우드의 키쌍을 발급받았고 이제 테라폼에서 네이버로 인프라 리소스들을 구성하기 위해 Provider를 구성해 보겠습니다.
https://registry.terraform.io/providers/NaverCloudPlatform/ncloud/latest/docs
provider등록은 해당 페이지의 USE PROVIDER에서 보실 수 있습니다.

위의 코드 내용을 main.tf 에 붙여 넣어줍니다.
terraform {
required_providers {
ncloud = {
source = "NaverCloudPlatform/ncloud"
version = "2.1.3"
}
}
}
terraform init을 통해 초기화를 진행해줍니다.
$ terraform init
Initializing the backend...
Initializing provider plugins...
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
terraform init 명령은 Terraform 코드를 스캔하고 필요한 Provider를 식별하고 다운로드합니다.
$ ls .terraform/providers/registry.terraform.io
navercloudplatform
init을 진행하면 해당 위치에 디렉터리가 생성된 것을 확인할 수 있습니다.

해당 디렉터리에는 모든 모듈과 플러그인이 저장됩니다.
기본 명령어
테라폼에 많은 명령어들이 있지만 기본적으로 사용되는 명령어는 terraform apply , terraform plan , terraform destroy 입니다.
더 많은 명령어들은 terraform help를 이용하여 확인할 수 있습니다.
- terraform apply - 작성한 코드를 적용합니다. 적용 전에 plan 명령어를 실행하고, 승인하게 되면 적용됩니다.
- terraform plan - 작성한 코드를 임시로 돌려봅니다. 쿠버네티스의 dry-run 기능과 같다고 보시면 됩니다.
- terraform destroy - 작성한 코드를 적용한 인프라를 삭제합니다.
- terraform fmt - 작성한 코드의 형식을 보기 쉽게 수정하여 줍니다.
마치며
아직 저는 회사에서 클라우드 인프라를 관리하거나 프로비저닝 할 때 클라우드 콘솔에서 클릭하며 만들고 있습니다. 물론 처음 클라우드 환경을 이해하기 위해서는 직접 어떻게 만드는지와 만드는 순서 같은 것을 익히기엔 클라우드 콘솔이 편하고 보기도 좋습니다. 하지만 코드와 친하지 않음에도 불구하고 테라폼을 도입하여야 하는 이유는 명확합니다. 코드화를 하면서 오는 이점들이 너무나도 많기 때문입니다. 변경사항 추적, 협업을 위한 공유, 반복 작업을 최소화 등등 너무나 많은 이점들이 있기 때문에 도입, 준비를 하고 있습니다.
해당 글은 terraform을 사용하기 위한 설치 방법과 클라우드 벤더 간 연동 그리고 기본적인 명령어들을 기록하였습니다. 해당 글에서는 연동 이외에 실제로 클라우드 인프라를 프로비저닝 하는 부분은 기록되어 있지 않습니다. 과거 회사에서 테라폼을 주제로 발표한 주제이기도 했고, 최근 네이버클라우드 x hashicorp에서 진행한 웨비나를 기반으로 글을 작성하였습니다. 앞으로 인프라 구성도 직접 하는 내용을 다루도록 하겠습니다.
References
Terraform by HashiCorp
Terraform is an open-source infrastructure as code software tool that enables you to safely and predictably create, change, and improve infrastructure.
www.terraform.io
https://registry.terraform.io/providers/NaverCloudPlatform/ncloud/latest
registry.terraform.io