[Terraform] Terraform 기초 지식

Terraform이란?

Terraform은 오픈 소스 코드형 인프라 (IaC)도구이다.

HCL이라는 언어를 사용해서, 클라우드 인프라 리소스 정의, 프로비저닝 및 관리할 수 있다.


IaC란?

IaC(Infrastructure as Code)는 코드로 인프라스트럭처를 관리한다는 개념이다.

쉽게 말해, 인프라를 사람이 읽을 수 있는 코드로 만들 수 있다.

IaC가 좋은 이유는 코드를 공유하거나 재사용이 가능하다는 것이다.


기본 구성 개념

  • 프로비저닝 - 프로세스나 서비스를 실행하기 위한 준비 단계
  • 프로바이더 - 테라폼과 외부 서비스를 연결해주는 기능 (AWS, Github, GitLab)
  • 리소스 - 프로바이더가 제공해주는 조작 가능한 대상의 최소 단위
  • 계획 (Plan) - .tf 파일의 내용을 실제로 적용 가능한지 확인하는 작업
  • 적용 (apply) - .tf 파일의 내용대로 리소스를 생성, 수정, 삭제하는 작업

.tf 파일이란?

Terraform에서 프로젝트는 일반적으로 각각 특정 용도를 제공하는 여러 파일로 구성된다.

  • backend.tf : Terraform State 가 저장될 원격 저장소의 작업 공간 정보가 명시되어 있는 terraform 코드
  • main.tf : Provider 등 기본이 되는 terraform 코드
  • outputs.tf : terraform 코드 실행 후 다른 terraform code 등에서 참고될 필요가 있는 값 정의
  • remote.tf : terraform 코드 실행시 참고하기 위해 원격 저장소에서 받아올 값 모음
  • vars.tf : terraform 코드 실행시 주입되어야 할 변수 모음

Terraform 코드 작성 Tip

terraform init

코드 작성자가 local 환경에서 terraform init 을 실행 시켜 backend를 설정한다.

Terraform을 사용할 때는 인프라 상태를 저장하기 위한 backend를 구성하는 것이 중요하다.

terraform plan

코드를 작성한 후 terraform plan 을 실행 시켜 변경 사항 등을 확인하고 Git으로 commit한다.

terraform validate

terraform plan 을 하기 전에 terraform validate 를 실행 시켜 코드 이상 유무를 확인 할 수 있다.