Terraform으로 Compute Engine 리소스 프로비저닝

HashiCorp Terraform은 클라우드 인프라를 프로비저닝하고 관리할 수 있게 해주는 코드형 인프라(IaC) 도구입니다. Terraform은 클라우드 제공업체 및 기타 API와 상호작용할 수 있는 제공업체라는 플러그인을 제공합니다. Google Cloud용 Terraform 제공업체를 사용하여 Compute Engine을 비롯한 Google Cloud 리소스를 프로비저닝하고 관리할 수 있습니다.

이 페이지에서는 Terraform 작동 방식에 대한 소개와 Google Cloud에서 Terraform 사용을 시작하는 데 도움이 되는 몇 가지 리소스를 포함하여 Compute Engine에서 Terraform을 사용하는 방법을 소개합니다. Compute Engine용 Terraform 참조 문서, 코드 예시, Terraform을 사용하여 Compute Engine 리소스를 프로비저닝하는 방법에 관한 가이드 링크도 확인할 수 있습니다.

Google Cloud용 Terraform을 시작하는 방법에 관한 안내는 Terraform 설치 및 구성 또는 Google Cloud용 Terraform 빠른 시작을 참고하세요.

Terraform 작동 방법

Terraform에는 구성 중심의 선언적인 구문이 있으며, 이 구문을 사용하여 Google Cloud 프로젝트에서 프로비저닝하려는 인프라를 설명할 수 있습니다. Terraform 구성 파일 하나 이상에서 이 구성을 작성한 후 Terraform CLI를 사용하여 이 구성을 Compute Engine 리소스에 적용할 수 있습니다.

다음 단계에서는 Terraform의 작동 방식을 설명합니다.

  1. Terraform 구성 파일에서 프로비저닝할 인프라를 설명합니다. 인프라를 프로비저닝하는 방법을 설명하는 코드를 작성할 필요가 없습니다. Terraform이 인프라를 자동으로 프로비저닝합니다.
  2. terraform plan 명령어 실행. 이 명령어는 구성을 평가하고 실행 계획을 생성합니다. 계획을 검토하고 필요에 따라 변경할 수 있습니다.
  3. terraform apply 명령어를 실행하여 다음 작업을 수행합니다.

    1. 백그라운드에서 해당 Compute Engine API를 호출하여 실행 계획에 따라 인프라를 프로비저닝합니다.
    2. 구성 파일의 리소스를 실제 인프라의 리소스에 매핑하는 JSON 파일인 Terraform 상태 파일을 생성합니다. Terraform은 이 파일을 사용하여 인프라의 최신 상태를 기록하고 리소스를 생성, 업데이트, 삭제할 시기를 결정합니다.
    3. terraform apply를 실행하면 Terraform은 상태 파일의 매핑을 사용하여 기존 인프라를 코드와 비교하고 필요에 따라 업데이트합니다.

      • 리소스 객체가 구성 파일에 정의되어 있지만 상태 파일에 존재하지 않는 경우 Terraform이 객체를 생성합니다.
      • 리소스 객체가 상태 파일에 있지만 구성 파일의 구성과 다른 경우 Terraform은 구성 파일과 일치하도록 리소스를 업데이트합니다.
      • 상태 파일의 리소스 객체가 구성 파일과 일치하면 Terraform은 리소스를 변경하지 않은 상태로 둡니다.

Compute Engine용 Terraform 리소스

리소스는 Terraform 언어의 기본 요소입니다. 각 리소스 블록은 가상 네트워크 또는 컴퓨팅 인스턴스와 같은 하나 이상의 인프라 객체를 설명합니다.

다음 표에는 Compute Engine에 사용할 수 있는 Terraform 리소스가 나와 있습니다.

Terraform 리소스 데이터 소스

Compute Engine용 Terraform 기반 가이드

다음 표에는 Compute Engine에 대한 Terraform 기반 안내 가이드 및 튜토리얼이 나와 있습니다.

가이드 세부정보
Compute Engine 인스턴스 만들기 및 시작하기 가상 머신(VM) 인스턴스를 만드는 방법을 설명합니다.
로컬 SSD 디스크로 VM 만들기 로컬 SSD 디스크 스토리지를 사용하여 VM을 만드는 방법을 설명합니다.
디스크 스냅샷 만들기 디스크의 데이터를 주기적으로 백업하는 표준 스냅샷을 만드는 방법을 설명합니다.
클론으로 디스크 복제 기존 디스크의 영역 디스크 클론을 만드는 방법을 설명합니다.
리전 디스크 만들기 및 관리 리전 디스크를 만들고 관리하는 방법을 설명합니다.
Spot VM 만들기 및 사용 스팟 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 인스턴스에 컨테이너 배포

다음 단계