Hashicorp Terraform은 클라우드 인프라를 프로비저닝하고 관리할 수 있게 해주는 코드형 인프라(IaC) 도구입니다. Terraform은 클라우드 제공업체 및 기타 API와 상호작용할 수 있는 제공업체라는 플러그인을 제공합니다. Google Cloud용 Terraform 제공업체(Google Cloud 제공업체)를 사용하여 Google Cloud 인프라를 프로비저닝하고 관리할 수 있습니다.
Terraform 사용의 이점
이 섹션에서는 Terraform을 사용하여 Google Cloud 인프라를 프로비저닝하고 관리할 때의 몇 가지 이점에 대해 설명합니다.
- Terraform은 Google Cloud 인프라를 프로비저닝하고 자동화하는 데 가장 일반적으로 사용되는 도구입니다. Google Cloud 제공업체를 통해 동일한 선언적 구문과 도구를 사용하여 모든 Google Cloud 리소스를 구성하고 관리할 수 있습니다.
- Terraform을 사용하면 인프라에 대해 원하는 최종 상태를 지정할 수 있습니다. 그런 다음 동일한 구성을 여러 번 배포하여 재현 가능한 개발, 테스트, 프로덕션 환경을 만들 수 있습니다.
- Terraform을 사용하면 구성을 적용할 때 Terraform이 수행할 작업을 보여주는 실행 계획을 생성할 수 있습니다. 이렇게 하면 Terraform을 통해 인프라를 수정할 때 예상치 못한 상황을 방지할 수 있습니다.
- Terraform을 사용하면 모듈 형태로 공통 코드를 패키징하고 재사용할 수 있습니다. 모듈은 클라우드 리소스를 만들기 위한 표준 인터페이스를 제공합니다. 이는 가독성을 높여 프로젝트를 단순화하며 팀이 읽을 수 있는 블록으로 인프라를 구성할 수 있도록 합니다. 또한 Google Cloud는 배포 가능한 독자적인 여러 모듈을 청사진으로 게시하고 시작하는 예시를 점프 스타트 솔루션으로 게시합니다.
- Terraform은 인프라의 현재 상태를 기록하고 상태를 효과적으로 관리할 수 있게 해줍니다. Terraform 상태 파일은 배포의 모든 리소스를 추적합니다.
Terraform 사용
Terraform에는 프로비저닝할 인프라를 작성하는 데 사용할 수 있는 선언적이고 구성 중심인 구문이 있습니다. 이 구문을 사용하면 Terraform 구성 파일에서 인프라의 기본 최종 상태를 정의합니다. 그런 후 Terraform CLI를 사용하여 구성 파일을 기반으로 인프라를 프로비저닝합니다.
다음 단계에서는 Terraform의 작동 방법을 설명합니다.
- Terraform 구성 파일에서 프로비저닝할 Google Cloud 인프라를 설명합니다. 이 구성을 프로비저닝하는 방법을 설명하는 코드를 작성할 필요가 없습니다.
terraform plan
명령어를 실행합니다. 이 명령어는 구성을 평가하고 실행 계획을 생성합니다. 계획을 검토하고 필요에 따라 변경할 수 있습니다.- 그런 다음
terraform apply
명령어를 실행하여 다음 작업을 수행합니다.- 백그라운드에서 해당 Google Cloud API를 호출하여 실행 계획에 따라 인프라를 프로비저닝합니다.
- 구성 파일의 리소스를 실제 인프라의 리소스에 매핑한 JSON 형식인 Terraform 상태 파일을 만듭니다. Terraform은 이 파일을 사용하여 인프라의 최신 상태를 확인하고 리소스를 생성, 업데이트, 삭제할 시기를 결정합니다.
- 이후에
terraform apply
를 실행하면 Terraform은 상태 파일의 매핑을 사용하여 기존 인프라를 코드와 비교하고 필요에 따라 업데이트합니다.- 구성 파일에 정의된 리소스 객체가 상태 파일에 존재하지 않는 경우 Terraform이 이를 만듭니다.
- 리소스 객체가 상태 파일에 있지만 구성 파일의 구성과 다른 경우 Terraform은 구성 파일과 일치하도록 리소스를 업데이트합니다.
- 상태 파일의 리소스 객체가 구성 파일과 일치하면 Terraform은 리소스를 변경하지 않은 상태로 둡니다.
Google Cloud 제공업체
Google Cloud 인프라를 프로비저닝하고 관리할 수 있는 제공업체에는 두 가지가 있습니다.
google
: Google Cloud API를 프로비저닝하고 관리하려면 이 제공업체를 사용합니다.google-beta
: Google Cloud 베타 API를 프로비저닝하고 관리하려면 이 제공업체를 사용합니다.
이러한 공급업체 사용 방법에 대한 안내는 Google Cloud 제공업체 구성 참조를 확인하세요.
google
및 google-beta
제공업체는 Magic Modules라는 도구를 통해 개발되었습니다. Magic Modules를 사용하면 참여자가 단일 코드베이스를 변경하고 google
및 google-beta
제공업체 모두 동시에 개발할 수 있습니다.
Magic Modules 참여 가이드의 안내에 따라 Magic Modules을 사용하여 Google Cloud 제공업체에 참여할 수 있습니다.
다음 단계
- Terraform을 사용하여 Compute Engine에서 기본 웹 서버를 만드는 방법 알아보기
- Cloud Storage 버킷에 Terraform 상태 저장하는 방법 알아보기
- 다양한 Google Cloud용 Terraform 샘플 살펴보기
- Google Cloud용 Terraform 모듈 및 청사진 살펴보기