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 를 실행 시켜 코드 이상 유무를 확인 할 수 있다.
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] RDS Snapshot (0) | 2024.10.16 |
---|---|
[Terraform] ALB (Security Group, Subnet) (1) | 2024.10.14 |
[Terraform] backend.tf 예시 및 Module, Data (0) | 2024.10.11 |
[Terraform] 다양한 이름 설정 (2) | 2024.09.30 |
[Terraform] Variable 및 Output 이해하기 (1) | 2024.09.27 |