HashiCorp Terraform은 클라우드 인프라를 프로비저닝하고 관리할 수 있게 해주는 코드형 인프라(IaC) 도구입니다. Terraform은 클라우드 제공업체 및 기타 API와 상호작용할 수 있는 제공업체라는 플러그인을 제공합니다. Google Cloud용 Terraform 제공업체를 사용하여 Compute Engine을 비롯한 Google Cloud 리소스를 프로비저닝하고 관리할 수 있습니다.
Terraform 작동 방식
Terraform에는 구성 중심의 선언적인 구문이 있으며, 이 구문을 사용하여 Google Cloud 프로젝트에서 프로비저닝하려는 인프라를 설명할 수 있습니다. Terraform 구성 파일 하나 이상에서 이 구성을 작성한 후 Terraform CLI를 사용하여 이 구성을 Compute Engine 리소스에 적용할 수 있습니다.
다음 단계에서는 Terraform의 작동 방식을 설명합니다.
- Terraform 구성 파일에서 프로비저닝할 인프라를 설명합니다. 인프라를 프로비저닝하는 방법을 설명하는 코드를 작성할 필요가 없습니다. Terraform이 인프라를 자동으로 프로비저닝합니다.
terraform plan
명령어 실행. 이 명령어는 구성을 평가하고 실행 계획을 생성합니다. 계획을 검토하고 필요에 따라 변경할 수 있습니다.-
terraform apply
명령어를 실행하여 다음 작업을 수행합니다.- 백그라운드에서 해당 Compute Engine API를 호출하여 실행 계획에 따라 인프라를 프로비저닝합니다.
- 구성 파일의 리소스를 실제 인프라의 리소스에 매핑하는 JSON 파일인 Terraform 상태 파일을 생성합니다. Terraform은 이 파일을 사용하여 인프라의 최신 상태를 기록하고 리소스를 생성, 업데이트, 삭제할 시기를 결정합니다.
-
terraform apply
를 실행하면 Terraform은 상태 파일의 매핑을 사용하여 기존 인프라를 코드와 비교하고 필요에 따라 업데이트합니다.- 리소스 객체가 구성 파일에 정의되어 있지만 상태 파일에 존재하지 않는 경우 Terraform이 객체를 생성합니다.
- 리소스 객체가 상태 파일에 있지만 구성 파일의 구성과 다른 경우 Terraform은 구성 파일과 일치하도록 리소스를 업데이트합니다.
- 상태 파일의 리소스 객체가 구성 파일과 일치하면 Terraform은 리소스를 변경하지 않은 상태로 둡니다.
Compute Engine용 Terraform 기반 가이드
다음 표에서는 Compute Engine에 대한 모든 Terraform 기반 안내 가이드 및 가이드를 보여줍니다.
가이드 | 세부정보 |
---|---|
Compute Engine 인스턴스 만들기 및 시작하기 | 가상 머신(VM) 인스턴스를 만드는 방법을 설명합니다. |
로컬 SSD 디스크로 VM 만들기 | 로컬 SSD 디스크 스토리지를 사용하여 VM을 만드는 방법을 설명합니다. |
디스크 스냅샷 만들기 | 표준 스냅샷을 만들어 디스크의 데이터를 주기적으로 백업하는 방법을 설명합니다. |
클론으로 디스크 복제 | 기존 디스크의 영역 디스크 클론을 만드는 방법을 설명합니다. |
동기식으로 복제된 디스크 만들기 및 관리 | 복제된 디스크를 만들고 관리하는 방법을 설명합니다. |
Spot VM 만들기 및 사용 | Spot VM을 만들고 관리하는 방법을 설명합니다. 스팟 VM은 Compute Engine 용량을 초과하는 VM 인스턴스입니다. 스팟 VM은 표준 VM의 주문형 가격에 비해 훨씬 저렴한 가격으로 제공됩니다. |
VM에 SSH 키 추가 | OS 로그인을 사용하는 VM 인스턴스 및 메타데이터 기반 SSH 키를 사용하는 VM에 SSH 키를 추가하는 방법을 설명합니다. |
종료 스크립트 실행 | VM 인스턴스가 중지되거나 다시 시작되기 바로 전에 명령어를 실행하는 종료 스크립트를 만들고 실행하는 방법을 설명합니다. |
단일 프로젝트에 대한 예약 만들기 | 동일한 프로젝트의 VM 인스턴스에서만 사용할 수 있는 단일 프로젝트 예약을 만드는 방법을 설명합니다. |
인스턴스 템플릿 만들기 | 인스턴스 템플릿을 만들고 관리하는 방법을 설명합니다. |
일정을 기준으로 확장 | 기존 MIG의 확장 일정을 만드는 방법을 설명합니다. 일정 기반 자동 확장을 사용하면 예상되는 부하보다 앞서 용량을 예약하여 워크로드의 가용성을 개선할 수 있습니다. |
VM에 Persistent Disk 스토리지 추가 | 빈 비부팅 영역 영구 디스크 볼륨을 만들고 VM에 연결하는 방법을 설명합니다. |
OS 로그인 설정 | OS 로그인을 설정하는 방법을 설명합니다. |
VM에 비부팅 디스크 연결 | 비부팅 영역 디스크를 VM에 연결하는 방법을 설명합니다. |
사용자 관리형 서비스 계정을 사용하는 VM 만들기 | 사용자 관리형 서비스 계정을 사용하도록 구성된 VM 인스턴스를 만드는 방법을 설명합니다. 서비스 계정은 승인된 API 호출을 수행하기 위해 일반적으로 애플리케이션 또는 컴퓨팅 워크로드에서 사용되는 특별한 종류의 계정입니다. |
영구 디스크 크기 늘리기 | 영구 디스크의 크기를 늘리는 방법을 설명합니다. |
VM에서 가상 디스플레이 사용 설정 | VM 인스턴스에서 가상 디스플레이를 사용 설정하는 방법을 설명합니다. |
단일 영역에 MIG 만들기 | 단일 영역에서 관리형 인스턴스 그룹(MIG)을 만드는 방법을 알아봅니다. 모든 MIG의 VM을 단일 영역에 두면 지연 시간을 최소화하는 데 도움이 되며, 일괄 워크로드와 같은 특정 워크로드에 유용합니다. |
커스텀 호스트 이름으로 VM 인스턴스 만들기 | 커스텀 호스트 이름으로 VM 인스턴스를 만드는 방법을 설명합니다. |
애플리케이션 기반 상태 점검 및 자동 복구 설정 | MIG에서 VM을 자동 복구하도록 애플리케이션 기반 상태 점검을 설정하는 방법을 설명합니다. |
선점형 VM을 사용하는 MIG 만들기 | 선점형 VM 인스턴스를 사용하는 MIG를 만드는 방법을 설명합니다. 선점형 VM은 워크로드에 중단이 허용되고 선점형 VM의 비용 절감 이점을 활용하려는 경우에 유용합니다. |
MIG의 VM 추가 및 삭제 | MIG에서 VM을 추가하고 삭제하는 방법을 설명합니다. |
자동 확장을 사용 설정하여 MIG 만들기 | 그룹의 평균 CPU 사용률을 기준으로 VM을 자동으로 추가하고 삭제하는 자동 확장된 MIG를 만드는 방법을 설명합니다. |
스테이트풀(Stateful) 디스크가 있는 MIG 만들기 | 선점형 VM 인스턴스를 사용하는 MIG를 만드는 방법을 설명합니다. 선점형 VM은 워크로드에 중단이 허용되고 선점형 VM의 비용 절감 이점을 활용하려는 경우에 유용합니다. |
SQL Server VM 인스턴스 만들기 | Microsoft SQL Server VM 인스턴스를 만드는 방법을 설명합니다. SQL Server는 Windows Server 및 일부 Linux 배포판에서 실행되는 데이터베이스 시스템입니다. 애플리케이션의 백엔드의 일부로, 가변형 개발과 테스트 환경으로 또는 백업 및 재해 복구용 온프레미스 시스템과 함께 SQL Server를 Compute Engine에서 사용할 수 있습니다. |
OS 정책 할당 만들기 | OS 정책 할당을 만드는 방법을 설명합니다. OS 정책을 사용하여 Linux 및 Windows VM 인스턴스에서 일관된 소프트웨어 구성을 유지할 수 있습니다. |
MIG에서 스테이트풀(Stateful) 메타데이터 구성 | MIG에서 스테이트풀(Stateful) 메타데이터를 구성하는 방법을 설명합니다. 인스턴스 메타데이터는 메타데이터 서버를 통해 애플리케이션의 속성을 설정하고 애플리케이션과 통신하는 데 유용합니다. |
MIG에서 스테이트풀(Stateful) 영구 디스크 구성 | MIG에서 스테이트풀(Stateful) 영구 디스크를 구성하는 방법을 설명합니다. 영구 디스크를 스테이트풀(Stateful)로 구성하면 디스크 상태를 보존하면서 VM 인스턴스 자동 복구와 자동화된 업데이트의 이점을 누릴 수 있습니다. |
MIG에 스테이트풀(Stateful) IP 주소 구성 | MIG에서 스테이트풀(Stateful) IP 주소를 구성하는 방법을 설명합니다. MIG에 스테이트풀(Stateful) IP 주소를 구성하면 그룹의 VM 인스턴스가 자동 복구, 업데이트, 재생성될 때 IP 주소가 보존됩니다. |
리전 MIG에서 VM의 목표 분산 형태 설정 | VM의 목표 분산 형태를 설정하는 방법을 설명합니다. |
VM이 리전의 여러 영역에 있는 MIG 만들기 | VM이 한 리전의 여러 영역에 분산된 MIG를 만드는 방법을 설명합니다. 애플리케이션 로드를 여러 영역 간에 분산하면 영역 장애로부터 워크로드가 보호됩니다. |
리전 MIG에서 사전 VM 재분산 사용 중지 및 다시 사용 설정 | 리전 MIG에서 사전 VM 재분산을 사용 중지하고 다시 사용 설정하는 방법을 설명합니다. 리전 MIG에서 리전에서 선택한 영역에서 VM 인스턴스 수를 짝수로 유지하려면 사전 인스턴스 재분산을 사용합니다. 이 구성 옵션은 영역 수준 장애 발생 시 애플리케이션의 가용성을 최대화합니다. |
Compute Engine용 Terraform 모듈 및 청사진
모듈과 청사진은 대규모 Google Cloud 리소스 프로비저닝 및 관리를 자동화하는 데 유용합니다. 모듈은 Terraform 리소스의 논리적 추상화를 만드는 재사용 가능한 Terraform 구성 파일 집합입니다. 청사진은 배포 및 재사용이 가능한 모듈의 패키지이며 특정 솔루션을 구현하고 문서화하는 정책입니다.
다음 표에는 Compute Engine과 관련된 모든 모듈과 블루프린트가 나와 있습니다.
모듈 또는 청사진 | 세부정보 |
---|---|
terraform-google-vm |
Google Cloud에서 VM을 프로비저닝하는 데 사용할 수 있는 독자적인 하위 모듈 모음입니다. |
terraform-google-startup-scripts |
VM에 삽입하는 데 유용한 시작 스크립트 라이브러리 제공 |
terraform-google-container-vm |
Compute Engine 인스턴스에 컨테이너 배포 |
Compute Engine용 Terraform 리소스
리소스는 Terraform 언어의 기본 요소입니다. 각 리소스 블록은 가상 네트워크 또는 컴퓨팅 인스턴스와 같은 하나 이상의 인프라 객체를 설명합니다.
다음 표에는 Compute Engine에 사용할 수 있는 Terraform 리소스가 나와 있습니다.
다음 단계
- Compute Engine용 Terraform 코드 샘플
- Google Cloud 기반 Terraform 문서
- HashiCorp의 Google Cloud 제공업체 문서
- Google Cloud용 코드형 인프라