-
[Terraform] 개요 및 작동 흐름terraform 2024. 11. 28. 15:27
Terraform이란?
- HashiCorp에서 관리하는 오픈소스 IaC 소프트웨어 툴
- 다양한 클라우드 지원 (AWS, Azure, Google …)
- HCL (HashiCorp Configuration Language) 언어 기반 파일 작성
Terraform 기본 사용법
Terraform을 이용한 인프라 구축은 보통 아래와 같은 수명 주기(lifecycle)을 가진다.
- ① .tf 파일 작성 > ② 구축 계획 확인 > ③ 리소스 생성 > ④ 리소스 수정 > ⑤ 리소스 삭제
.tf 파일 작성
Terraform Workflow 중, tf 파일 작성에 대한 내용부터 다뤄본다.
providers.tf
- Terraform으로 생성할 인프라 공급자 정의 ex) Azure, AWS, GCP …
- 보통, 두 가지 block으로 분류하여 구성한다.
① terraform
- 테라폼 자체 설정 정의
- 테라폼 버전이나 provider 버전 등을 정의
- 'required_providers'를 사용하여 필요한 provider 버전과 다운로드 위치 명시 가능
② provider
- 테라폼을 통해 관리할 인프라 공급자(클라우드 플랫폼)을 정의한다 ex) AzureRM, AWS, Google …
main.tf
- terraform으로 생성할 인프라 리소스 정의
- 리소스 block으로 구성
[예시]
resource “RESOURCE_TYPE” “NAME” { ARGUMENT = VALUE }
*RESOUCE_TYPE : 리소스 종류 ex) azurerm_resource_group
*NAME : 리소스 이름 ex) rg
*ARGUMENT : 인자/속성
variables.tf
- Terraform 모듈 내에서 사용할 변수 정의
- 주로 모듈 내 공통으로 사용되는 변수 정의
[예시]
variable "variable_name" { type = string default = "default_value“ description = "Description of the variable” }
*type : 변수 데이터 유형 ex) string, number, bool, list, map 등
*default : 변수가 제공되지 않았을 때 사용할 기본값
*description : 변수에 대한 설명
outputs.tf
- Terraform에서 생성된 리소스의 속성 및 값을 외부에 노출
[예시]
output "output_name" { description = "Description of the output" value = <expression> }
*output_name : 출력의 이름
*description : 출력에 대한 설명
*value : 출력으로 노출할 값이나 표현식
Terraform Workflow
.tf 파일을 다 생성하였다면, 테라폼 명령어를 실행시켜서 리소스를 배포해보자!
terraform init
- 사용자가 지정한 provider와 version에 맞게 테라폼 라이브러리를 설치하여 현재 경로에서 테라폼을 사용할 수 있도록 설정하는 명령어
- 'terraform init' 명령어가 실행되면 .terraform 폴더와 .terraform.lock.hcl 파일이 생성됨
terraform validate
- 앞서 'terraform init' 명령어를 실행한 폴더 내부 구성을 참조하여, 원격 상태 / provider API와 같은 구성 파일의 유효성 검사
terraform plan
- 실제로 작성한 리소스 이름, 변수 등의 코드 유효성 검증
terraform apply
- terraform plan 명령어를 통해 확인한 내용을, 실제 인프라로 배포
- apply 성공 시 terraform.tfstate 파일이 생성되며 배포된 리소스들의 구성 정보가 저장됨
- apply 명령어의 여러 옵션
-auto-approve : 배포 시 확인 과정 생략 (yes 생략)
-refresh-only : 상태 파일만 업데이트 하고, 실제 리소스는 변경하지 않음
terraform destroy
- 테라폼으로 배포된 리소스를 모두 삭제
- 배포 후에 생긴 terraform.tfstate 파일의 모든 리소스가 삭제
- 리소스가 삭제될 때마다 terraform.tfstate 파일 내용도 삭제
'terraform' 카테고리의 다른 글
[Terraform] 테라폼의 모듈화 (0) 2024.11.30 [Terraform] Terraform 구성 요소 (Block) (0) 2024.11.29 [Terraform] Azure 환경 기반 Terraform 설치 (0) 2024.11.21