Terraform
Terraform은
HashiCorp에서 개발한 오픈소스 인프라 자동화 도구로,
"Infrastructure as Code(IaC)"를 실현하는 대표적인 솔루션입니다.
Terraform은 HashiCorp에서 개발한 인프라스트럭처 코드(Infrastructure as Code, IaC) 도구입니다. 다양한 클라우드 서비스(AWS, Azure, GCP 등)와 온프레미스 환경에서 인프라를 코드로 정의하고, 이를 선언적으로 관리할 수 있습니다. Terraform은 HCL(HashiCorp Configuration Language)이라는 자체 언어를 사용하며, 인프라 리소스의 생성, 변경, 삭제를 자동화합니다.
설치
ubuntu 22.04 설치 기준입니다.
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform
설치 확인
terraform --version
주요 구성 요소
1. 프로바이더(Provider)
- Terraform이 인프라를 관리할 수 있도록 클라우드 플랫폼(API)과 연결해주는 역할
- 테라폼으로 생성할 인프라의 종류를 의미
- 일반적으로 provider.tf 파일에 정의
2. 리소스(Resource)
- Terraform이 생성하거나 관리하는 인프라 대상
- 일반적으로 main.tf 파일에 정의
3. 변수(Variable)
- 코드에서 재사용성과 유연성을 높이기 위해 사용
4. 출력값(Output)
- 리소스를 생성한 후 유용한 정보를 출력 (예: 퍼블릭 IP, URL 등)
5. 상태 파일(State)
- Terraform이 생성한 인프라 상태를 기록해 두는 파일 (terraform.tfstate)
- 선언한 코드와 실제 인프라를 비교하여 변경 사항을 반영함
6. 모듈(Module)
- 여러 리소스를 묶어 재사용할 수 있는 코드 블록
7. 데이터(Data)
- 외부 데이터 소스 참조
8. 지역 변수(Locals)
- 보통 locals.tf 파일에 정의
- 현재 실행 파일에서 사용되는 지역 변수
사용 방법
1. 코드 작성
.tf 확장자의 파일에 리소스를 정의
2. 초기화(init)
프로젝트 초기화 및 provider 플러그인 다운로드
3. 계획 확인(plan)
작성한 코드대로 어떤 리소스를 생성/변경/삭제할지 시뮬레이션
4. 리소스 생성(apply)
실제로 리소스를 생성
5. 리소스 정리(destroy)
리소스를 삭제