1. Terraform
1.1 Terraform 이란?
Terraform은 HashiCorp에서 개발한 무료 오픈소스 IAC 도구이다. IAC 개요 및 주요 도구에서 다룬 것과 같이 주로 인프라 프로비저닝에 사용되는 툴로써, 설치 파일은 단일 바이너리로 구성돼 있어서 빠르게 설정할 수 있다.
Terraform의 가장 큰 장점 중 하나는 여러 플랫폼(프라이빗 클라우드와 퍼블릭 클라우드)을 아우르는 인프라 배포가 가능하다는 거이다. 예를 들어, 온프레미스 vSphere 클러스터부터 AWS, GCP, Azure 같은 클라우드 솔루션까지 지원한다.
1.2 Terraform 과 HashiCorp
HashiCorp 는 클라우드 인프라를 효율적으로 관리하고 자동화하기 위한 다양한 도구를 개발하는 회사이다. HashiCorp의 제품은 DevOps, 클라우드, 그리고 인프라 관리에 초점을 맞추고 있으며 Terrafrom 도 그들의 제품 중 하나이다.
2. Terraform의 핵심: Providers
Terraform이 이렇게 다양한 플랫폼을 지원할 수 있는 이유는 Provider 덕분이다.
Provider 는 HashiCorp 와 Terraform Community 에 의해 작성, 유지되며 외부 플랫폼을 API 형태로 생성, 관리 할 수 있도록 도와주는 역할을 한다. 대표적으로 다음과 같은 Provider 들이 있다:
- 클라우드 플랫폼: AWS, GCP, Azure
- 네트워크 인프라: CloudFlare, DNS, Palo Alto Networks
- 모니터링 및 데이터 관리 도구: DataDog, Grafana, Sumo Logic
- 데이터베이스: MySQL, PostgreSQL, MongoDB
- 버전 관리 시스템: GitHub, GitLab, Bitbucket
이 외에도 Terraform Registry 에서 수천개 이상의 Provider 를 찾을 수 있다.
3. Terraform의 언어: HCL
Terraform은 HashiCorp Configuration Language(HCL)라는 선언적 언어를 사용한다.
이 언어를 이용하면 .tf 확장자
를 가진 구성 파일에 인프라 리소스를 코드로 정의 한다.
- HCL 은 코드 작성과 읽기가 쉬워서 초보자도 금방 배울 수 있다는 장점이 있다.
- 선언형 코드로 현재 상태에서 원하는 상태(Desired State)로 인프라를 관리할 수 있다.
예를 들어, AWS에 EC2 인스턴스를 프로비저닝하는 코드를 작성하면, Terraform이 알아서 필요한 작업을 진행해서 현재 상태를 원하는 상태로 맞춰준다.
4. Terraform의 작업 단계
Terraform은 세 가지 주요 단계를 거쳐 작업한다.
- Write: 프로젝트에 사용될 Provider 와 리소스를 정의하고 원하는 상태를 작성한다.
- Plan: Terrafrom 은 해당 리소스의 현재 상태와 원하는 상태를 비교해서 실행 계획 작성한다.
- Apply: 실행 계획대로 리소스를 생성, 수정, 삭제 등을 수행한다.
만약 환경이 원하는 상태에서 벗어나면, Terraform이 자동으로 수정해서 다시 맞춰준다. 덕분에 인프라는 항상 정의된 상태로 유지된다.
5. Terraform의 상태(State)
Terraform은 리소스의 상태를 기록해서 '실시간'으로 인프라 상태를 추적해.
- State 파일: 인프라의 설계도 같은 역할을 수행
- 데이터 소스: 기존 리소스의 속성을 읽어서 다른 리소스 설정에 활용할 수도 있음
- Import 기능: 수동으로 생성된 리소스나 다른 IAC 도구로 만든 리소스를 가져와서 Terraform 관리 하에 둘 수 있음
'탐구 생활 > Terraform' 카테고리의 다른 글
Terraform 기초: commands (0) | 2024.11.21 |
---|---|
Terraform 기초: State (0) | 2024.11.21 |
Terraform 기초: depends_on, output (0) | 2024.11.19 |
Terraform 기초: HCL 기본기 (0) | 2024.11.17 |
IAC 개요 및 주요 도구 (1) | 2024.11.17 |