정의
Terraform은 버전화, 재사용 및 공유할 수 있는 사람이 읽을 수 있는 구성 파일에서 클라우드 및 온프레미스 리소스를 모두 정의할 수 있는 코드형 인프라 도구입니다. 일관된 워크플로를 사용하여 수명 주기 동안 모든 인프라를 프로비저닝하고 관리할 수 있습니다. Terraform은 컴퓨팅, 스토리지 및 네트워킹 리소스와 같은 하위 수준 구성 요소와 DNS 항목 및 SaaS 기능과 같은 상위 수준 구성 요소를 관리할 수 있습니다.
개념
Terraform은 API 기반의 provider를 통해 동작합니다. provider는 API를 통해 Terraform이 거의 모든 플랫폼 또는 서비스와 함께 작동할 수 있도록 합니다.
HashiCorp 및 Terraform 커뮤니티는 다양한 유형의 리소스 및 서비스를 관리하기 위해 이미 수천 개의 provider를 작성했습니다. Amazon Web Services(AWS), Azure, Google Cloud Platform(GCP), Kubernetes, Helm, GitHub, Splunk, DataDog 등을 포함 하여 Terraform Registry에서 공개적으로 사용 가능한 모든 provider를 찾을 수 있습니다 .
핵심 Terraform 워크플로는 다음 세 단계로 구성됩니다.
- 쓰기 : 여러 클라우드 provider 및 서비스에 걸쳐 있을 수 있는 리소스를 정의합니다. 예를 들어 보안 그룹 및 로드 밸런서가 있는 Virtual Private Cloud(VPC) 네트워크의 가상 머신에 애플리케이션을 배포하는 구성을 생성할 수 있습니다.
- 계획 : Terraform은 기존 인프라 및 구성을 기반으로 생성, 업데이트 또는 파괴할 인프라를 설명하는 실행 계획을 생성하고 청사진을 만들어줍니다.
- 적용 : 승인 시 Terraform은 모든 리소스 종속성을 고려하여 올바른 순서로 제안된 작업을 수행합니다. 예를 들어 VPC의 속성을 업데이트하고 해당 VPC의 가상 머신 수를 변경하면 Terraform은 가상 머신을 확장하기 전에 VPC를 다시 생성합니다.
기능
Terraform의 주요 기능은 다음과 같습니다.
- 모든 인프라 관리 : Terraform Registry에서 이미 사용하고 있는 여러 플랫폼 및 서비스의 provider를 찾을 수 있습니다. Terraform은 인프라에 대해 접근 방식을 통일하여 서비스 및 인프라를 업그레이드하거나 수정하는 복잡성을 줄입니다.
- 인프라 추적 : Terraform은 계획을 생성하고 인프라를 수정하기 전에 승인을 요청합니다. 또한 환경에 대한 정보 소스 역할을 하는 상태 파일에서 실제 인프라를 추적 합니다. Terraform은 상태 파일을 사용하여 구성 파일과 일치하도록 인프라에 대한 변경 사항을 결정합니다.
- 변경 자동화 : Terraform 구성 파일은 인프라의 최종 상태를 설명합니다. Terraform은 인프라 구성도를 작성하여 인프라간의 종속성을 판별하고 종속되지 않은 인프라를 을 병렬로 생성하거나 수정합니다. 이를 통해 Terraform은 리소스를 효율적으로 프로비저닝할 수 있습니다.
- 구성 표준화 : Terraform은 구성 가능한 인프라 컬렉션을 정의하는 모듈이라는 재사용 가능한 구성 구성 요소를 지원 하여 시간을 절약하고 모범 사례를 권장합니다. Terraform 레지스트리에서 공개적으로 사용 가능한 모듈을 사용하거나 직접 작성할 수 있습니다.
- 협업 : 구성이 파일에 작성되므로 이를 VCS(버전 제어 시스템)에 커밋하고 Terraform Cloud를 사용 하여 팀 전체에서 Terraform 워크플로를 효율적으로 관리할 수 있습니다. Terraform Cloud는 일관되고 신뢰할 수 있는 환경에서 Terraform을 실행하고 공유 상태 및 비밀 데이터에 대한 보안 액세스, 역할 기반 액세스 제어, 모듈 및 provider 공유를 위한 개인 레지스트리 등을 제공합니다.