
Terraform 실습
Terraform 스크립트는 init -> plan -> apply 명령어 순으로 적용하여 리소스를 프로비저닝 할 수 있다.
이 순서에 따라서 local device에 txt 파일을 만들어본 후 txt 파일을 업데이트 해보겠다.
1. 스크립트 작성
Terraform 스크립트는 이전 Terraform:HCL 기본기 에서 살펴본것과 같이 Block 단위로 Resource 와 Argument 를 명시해주면 된다.

나는 terraform-tutorial 이라는 디렉터리를 만들고 그 공간에서 실습을 진행했다.

2 terraform init
script 를 적절히 작성한 후 terraform init 을 실행하면 작업공간(terraform-tutorial) 에 .terraform 디렉터리와 .terraform.locl.hcl 파일이 생성된다.

2.1 terraform 디렉터리

.terraform 디렉터리는 Terraform 의 작업공간으로서 "프로젝트 상태" 를 유지하고 필요한 파일을 관리하는데 사용된다. 구체적으로 다음의 역할을 수행한다:
- 플러그인(Providers) 캐싱: 프로젝트에 사용되는 Provider 들의 바이너리가 저장된다. 덕분에 매번 동일한 Provider 를 다운로드 받지 않아도 된다.
- Terraform 상태 관리: Terraform이 인프라를 프로비저닝하거나 업데이트하면서 필요한 메타데이터를 보관한다. S3 나 Terraform Cloud 같은 원격 상태를 사용할 경우 원격 상태 정보가 저장되기도 한다.
- Terraform 구성 파일 모듈 관리: 프로젝트에서 모듈을 사용할 경우, 다운로드된 모듈이 저장된다.
- Terraform 작업 설정: Terraform 실행 시 생성되는 파일이나 설정 정보가 저장된다.
.terraform 디렉터리를 삭제하면 다시 필요한 Provider 를 다운로드 하는 과정을 거친다.
2.2 terraform.lock.hcl

.terraform.lock.hcl 파일은 Provider와 모듈의 버전을 고정하는 역할을 한다. 덕분에 실행 환경에서 동일한 버전을 사용할 수 있도록 보장된다.
3 terraform plan

terraform plan 커맨드를 입력하면, 사용자가 설정한 리소스 타입이 받아들인 argument 값을 알려주고 그에 따라 앞으로 생길 변화에 대해 리포트해준다. init 단계에서 생성된 .terraform 디렉터리와 .terraform.lock.hcl 에 영향은 없다.
4 terraform apply

terraform apply 커맨드를 입력하면 plan 에 따른 리소스 생성, 변경, 삭제가 이루어진다. 그리고 apply 가 될 때 terraform.tfstate 파일이 생성된다.
4.1 terraform.tfstate
terraform.tfstate 파일은 Terraform이 관리하는 현재 인프라의 상태를 저장한다.
이렇게 저장된 상태 정보는 Terraform이 정의한 Desired State(원하는 상태)와 Current State(현재 상태)를 비교하는 데 사용된다.

실제 생성된 terraform.tfstate 파일을 확인해보면 plan 에 나왔던 argument 들이 어떤 값이 들어가 있는지, 어떤 프로바이더가 사용되었는지 등의 정보가 생성된다.
5 리소스 수정
5.1 스크립트 수정
terraform 을 통해 생성된 리소스를 수정하기 위해 스크립트를 수정한다. 기존 pets.txt 의 content 를 변경했고, pets.json 이라는 파일을 추가하도록 했다.

5.2 paln & apply
이미 해당 작업공간에는 terraform init 이 되어 있으므로 추가로 init 할 필요는 없다.
terraform plan 커맨드를 입력하면 변경된 스크립트에 기반하여 어떤 변화가 생길지

흥미로운 점은 pets.txt 파일은 change 되는게 이니라 replaced 된다는 점이다. 덕분에 최종 plan 에는 2 to add, 0 to change, 1 to destroy 가 표시되었다. 이런식으로 변경된 사항만 바뀌는게 아니라아예 없애고 새롭게 만드게 하는것을 Immutable Infrastructure 라한다.
terraform apply 커맨드를 입력해보자, yes 를 누르면 plan 에 있던 변화가 반영된다.

6. 리소스 삭제
작업 공간에서 terraform destroy 를 입력하면 terraform 에 의해 관리되던 리소스를 destroy 하게 된다.

'기초 지식 > Terraform' 카테고리의 다른 글
Terraform 기초: 변수와 변수의 활용 (1) | 2024.11.18 |
---|