Terraform으로 Google Cloud Platform 쉽게 자동화하기
Terraform으로 로드 밸런서, 인스턴스 템플릿, 인스턴스 그룹, 방화벽 규칙을 쉽게 배포할 수 있다.

옛날 옛적에 Google Cloud Platform을 배우던 시절, 워크플로우와 배포를 Terraform으로 자동화하고 싶어서 인프라를 쉽고 빠르게 관리하기 위해 이 IaaC(Infrastructure as a Code)를 작성했다.
이게 무엇을 할 수 있는가?
SSL이 포함된 안전한 로드 밸런서를 생성하고 HTTP 요청을 301 리디렉션 코드로 HTTPS로 전환한다.
인스턴스 템플릿을 생성하고 네트워크, 서브넷, 시작 스크립트에 관한 모든 것을 설정한다.
인스턴스 그룹을 생성하고 관리한다. 인스턴스 그룹의 CPU가 특정 값보다 높거나 낮으면, 인스턴스 그룹 관리자가 자동으로 VM을 확장하거나 축소한다.
VM 인스턴스는 Private IP로 실행되며, 프로젝트 전체 SSH 접근은 기본적으로 허용되지 않는다. 로드 밸런서 상태 확인을 위한 방화벽 규칙을 관리한다.
요구사항
- 활성화되지 않은 경우 Compute Engine API 활성화.
Editor역할(또는 원하는 역할)의 Service Account 생성 및 키 파일 내보내기.- Terraform 상태를 보관할 Cloud Google Storage Bucket 생성. 원한다면 서비스 계정을 버킷 멤버로 추가할 수 있다.
- Debian 10 기반 VM을 생성하고
sudo apt install -y nginx로 nginx를 설치한 후 이 Terraform 코드를 테스트할 Compute Engine Image 생성. VM을 이미지로 변환하기 전에sudo systemctl enable nginx명령을 잊지 말자.
사용법
단계는 다음과 같다...
- 리포지토리 클론:
git clone git@github.com:flightlesstux/gcp-instance-group-and-loadbalancer-w-terraform.git - Google Platform 인증:
export GOOGLE_APPLICATION_CREDENTIALS=service-account-key.json - Project ID Export:
export GOOGLE_PROJECT="0123456789012" - 변수 값 편집: variables.tf 파일.
- SSL 인증서 설정:
certs폴더 아래에 SSL 인증서와 키 파일을 붙여넣기. - 배포 버전:
export TF_VAR_deploy_version=v1 - 초기화:
terraform init - 배포!:
terraform apply또는terraform apply -auto-approve
리포지토리 주소
https://github.com/flightlesstux/gcp-instance-group-and-loadbalancer-w-terraform
이 글이 도움이 되길 바란다.
Ercan의 다른 글
같은 저자, 다른 영역의 사이트 두 개.