Packer는 단일 소스 구성으로부터 여러 플랫폼에 대해 동일한 가상 머신(VM) 이미지를 만들기 위한 오픈소스 도구입니다. 이 페이지에서는 Packer 및 Cloud Build를 사용하여 Compute Engine에서 사용할 VM 이미지를 만드는 방법을 설명합니다.
시작하기 전에
이 페이지의 안내는 사용자가 Packer
에 익숙하다고 가정합니다. 또한 다음 사항도 적용됩니다.
- Packer 템플릿을 포함한 소스 코드를 준비합니다.
- 이 페이지의
gcloud
명령어를 사용하려면 Google Cloud CLI를 설치합니다. 다음 API를 사용 설정합니다.
gcloud services enable sourcerepo.googleapis.com gcloud services enable compute.googleapis.com gcloud services enable servicemanagement.googleapis.com gcloud services enable storage-api.googleapis.com
필수 IAM 권한
Cloud Build에 Packer를 사용하려면 빌드 서비스 계정에 Compute Engine 인스턴스 관리자 역할(
roles/compute.instanceAdmin.v1
)을 부여합니다.Artifact Registry에 빌드된 이미지를 저장하려면 Artifact Registry 작성자(
roles/artifactregistry.writer
) 역할을 빌드 서비스 계정에 부여합니다.
Packer 빌더 이미지 만들기
Cloud Build는 Cloud Build에서 packer
명령어를 호출하기 위해 사용할 수 있는 Packer 커뮤니티 빌더 이미지를 제공합니다.
Cloud Build 구성 파일에서 이 빌더를 사용하려면 먼저 이미지를 빌드하고 이를 프로젝트의 Container Registry에 푸시해야 합니다.
cloud-builders-community 저장소를 클론합니다.
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
Packer 빌더 이미지로 이동합니다.
cd cloud-builders-community/packer
프로젝트에 빌더를 제출합니다.
gcloud builds submit .
Packer 빌더 사용
packer.json 파일이 소스 코드와 함께 있는지 확인합니다.
프로젝트 루트 디렉터리에서 이름이
cloudbuild.yaml
또는cloudbuild.json
인 빌드 구성 파일을 만듭니다.빌드 구성 파일에서
packer build
명령어를 호출하기 위한 빌드 단계를 추가합니다.YAML
steps: - name: 'gcr.io/[PROJECT_ID]/packer' args: - build - -var - image_name=[IMAGE_NAME] - -var - project_id=[PROJECT_ID] - -var - image_family=[IMAGE_FAMILY] - -var - image_zone=[IMAGE_ZONE] - packer.json
JSON
{ "steps": [ { "name": "gcr.io/[PROJECT_ID]/packer", "args": [ "build", "-var", "image_name=[IMAGE_NAME]", "-var", "project_id=[PROJECT_ID]", "-var", "image_family=[IMAGE_FAMILY]", "-var", "image_zone=[IMAGE_ZONE]", "packer.json" ] } ] }
각 항목의 의미는 다음과 같습니다.
빌드 구성 파일을 사용하여 빌드를 시작합니다.
gcloud builds submit --region=[REGION] --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY]
각 항목의 의미는 다음과 같습니다.
[CONFIG_FILE_PATH]
는 빌드 구성 파일의 경로입니다.[SOURCE_DIRECTORY]
는 소스 코드의 경로 또는 URL입니다.[REGION]
은 지원되는 빌드 리전 중 하나입니다.
gcloud builds submit
명령어에서[CONFIG_FILE_PATH]
와[SOURCE_DIRECTORY]
를 지정하지 않으면 Cloud Build는 구성 파일과 소스 코드가 현재 작업 중인 디렉터리에 있다고 간주합니다.
이미지가 빌드되면 Google Cloud Console의 Compute Engine 이미지 페이지에서 이를 볼 수 있습니다.
다음 단계
- 컨테이너를 빌드하는 방법 알아보기
Go
프로젝트 빌드 방법 알아보기- 빌드 오류 문제 해결 방법 알아보기