이 문서에서는 Image Builder 파이프라인의 기본 OS 이미지, 하드웨어 구성, 출시 대상, 맞춤설정 작업을 정의하는 데 사용하는 맞춤설정 레시피 파일 imagebuilder.yaml의 구조와 매개변수를 설명합니다.
스키마 개요
맞춤설정 구성은 API 버전 imagebuilder.gcp.com/v1 및 리소스 종류 OSImageCustomization을 사용합니다.
표준 레시피 파일의 구조는 다음과 같습니다.
apiVersion: imagebuilder.gcp.com/v1 kind: OSImageCustomization metadata: # Recipe metadata and identifying details infrastructureConfig: # VM machine type, zone, and network settings source: # Base source image profile destinations: # Output OS image release targets spec: config: # Build options and validation test flags steps: # Customization actions (Shell, FileCopy, UpdateKernelCommandLine, InstallGPU)
메타데이터
이 맞춤 빌드 템플릿의 식별 세부정보를 제공합니다.
metadata: name: CONFIG_NAME description: DESCRIPTION
name(문자열, 필수): 이 구성의 식별자입니다.description(문자열, 선택사항): 빌드 목적에 대한 설명입니다.
인프라 구성
Image Builder가 빌드 및 유효성 검사 작업 중에 만드는 임시 가상 머신 인스턴스의 하드웨어 및 네트워크 속성을 지정합니다.
infrastructureConfig: machineType: MACHINE_TYPE zone: ZONE network: projects/PROJECT_ID/global/networks/NETWORK_NAME subnetwork: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME externalIP: ephemeral acceleratorType: nvidia-l4 acceleratorCount: 1 debug: false instanceDurationHours: 2.0 reservations: - RESERVATION_NAME
machineType(문자열, 필수): 작업자 및 테스트 VM에 사용할 Compute Engine 머신 유형입니다. 머신 유형이imageFamily또는imagePath에 지정한 소스 이미지의 아키텍처와 일치하는지 확인합니다. 예를 들어 x86 이미지에는e2-standard-4를 사용하고 Arm 이미지에는c4a-standard-4를 사용합니다. 베어메탈 머신 유형은 지원되지 않습니다.zone(문자열, 필수): 작업자 및 테스트 VM이 실행되는 영역입니다(예:us-central1-a).network(문자열, 선택사항): 작업자 및 유효성 검사 테스트 VM에 연결할 VPC 네트워크입니다(예:projects/<var>PROJECT_ID</var>/global/networks/<var>NETWORK_NAME</var>또는default). 생략하면 Image Builder에서 기본 네트워크를 사용합니다.subnetwork(문자열, 선택사항): 작업자 및 유효성 검사 테스트 VM에 연결할 VPC 서브네트워크입니다(예:projects/<var>PROJECT_ID</var>/regions/<var>REGION</var>/subnetworks/<var>SUBNET_NAME</var>).externalIP(문자열, 선택사항): 작업자 및 유효성 검사 테스트 VM의 외부 IP 주소 할당을 지정합니다. 허용되는 값:ephemeral(기본값): 공유 풀에서 공개 임시 IPv4 주소를 할당합니다.none: 외부 IP 주소가 없는 VM을 만듭니다. 비공개 VPC 네트워킹만 사용합니다.none으로 설정하면 VM이 required Google Cloud services 및 패키지 저장소에 액세스할 수 있도록 VPC 서브네트워크 에 비공개 Google 액세스 또는 Cloud NAT가 사용 설정되어 있는지 확인합니다.
acceleratorType(문자열, 선택사항): 작업자 VM에 연결할 GPU 가속기 유형입니다(예:nvidia-tesla-t4또는nvidia-l4).acceleratorCount(숫자, 선택사항): 작업자 VM에 연결할 GPU 가속기 수입니다.debug(불리언, 선택사항):debug를true로 설정하면 맞춤설정이 완료되든 실패하든 Image Builder에서 작업자 VM을 보존하므로 SSH를 사용하여 활성 인스턴스를 검사하거나 문제를 해결할 수 있습니다. 기본값은false입니다.instanceDurationHours(숫자, 선택사항): 작업자 VM 런타임을 제한합니다. 시간 제한은 맞춤설정이 완료되거나 스크립트 오류가 발생할 때 시작되므로 대화형 디버깅 세션 중에 활성 VM에 연결할 수 있습니다. 최대2.0시간으로 제한됩니다.reservations(문자열 배열, 선택사항): Image Builder가 VM을 만들 때 사용할 용량 예약 리소스 이름입니다 (예: 동일한 프로젝트의test-reservation).
소스 이미지
Image Builder가 작업자 VM을 실행하는 데 사용하는 기본 운영체제 이미지를 식별합니다. 다음 옵션 중 하나를 지정해야 합니다.
표준 이미지 계열을 지정하려면 다음 안내를 따르세요.
source: imageFamily: projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY
직접 이미지 버전 URI를 지정하려면 다음 안내를 따르세요.
source: imagePath: projects/IMAGE_PROJECT/global/images/IMAGE_NAME
imageFamily(문자열): 표준 이미지 가족 그룹의 경로입니다(예:projects/ubuntu-os-cloud/global/images/family/ubuntu-2204-lts).imagePath(문자열): 특정 Compute Engine 이미지 버전의 직접 리소스 URI입니다(예:projects/cos-cloud/global/images/cos-105-17412-226-28).
대상
컴파일된 맞춤 OS 이미지를 출시할 위치와 방법을 정의합니다. 이 속성에는 diskImage 아래의 출시 대상 객체 목록이 포함되어 있습니다.
destinations: - diskImage: name: IMAGE_NAME project: PROJECT_ID family: IMAGE_FAMILY description: DESCRIPTION licenses: - projects/PROJECT_ID/global/licenses/LICENSE_NAME labels: env: production signatureDatabaseFile: SIGNATURE_DB_PATH storageLocations: - us-central1
name(문자열, 필수): 최종 Compute Engine 이미지 리소스에 할당된 기본 이름 프리픽스입니다. Image Builder는 이 프리픽스에 고유한 빌드 ID를 자동으로 추가하고 최종 이미지 이름을 63자로 자릅니다.family(문자열, 선택사항): 새로 생성된 이미지에 적용할 이미지 계열입니다.project(문자열, 필수): Image Builder가 출력 이미지를 쓰는 Google Cloud 프로젝트입니다.description(문자열, 선택사항): 생성된 이미지 메타데이터에 연결된 설명 텍스트입니다.licenses(문자열 배열, 선택사항): 이 이미지에 적용된 특정 소프트웨어 라이선스의 리소스 경로입니다.labels(맵, 선택사항): 태그 메타데이터 키-값 쌍입니다(예:env: production).signatureDatabaseFile(문자열, 선택사항): 보안 부팅 서명 데이터베이스 파일의 리소스 경로입니다.storageLocations(문자열 배열, 선택사항): Compute Engine이 최종 디스크 블록을 저장하는 대상 스토리지 리전 또는 멀티 리전입니다(예:us-central1또는us). 참고: 이 속성은 목록으로 형식이 지정되지만 이미지 대상당 하나의 위치만 지정할 수 있습니다.
사양 구성
일반 실행 옵션을 적용합니다.
spec: config: skipSystemTests: false
skipSystemTests(불리언, 선택사항): 테스트 VM이 부팅 조건, 네트워킹, UEFI 구조를 평가할지 전환합니다. 기본값은false입니다.
사양 단계
Image Builder가 작업자 VM에서 순서대로 실행하는 단계 객체 목록을 지정합니다. 각 단계 유형의 전체 입력 매개변수 스키마 및 사용 예시는 지원되는 맞춤설정 작업을 참고하세요.
모든 맞춤설정 단계 객체는 다음과 같은 공통 속성을 공유합니다.
spec: steps: - name: STEP_NAME action: ACTION_TYPE inputs: # Action-specific input parameters
name(문자열, 필수): 이 맞춤설정 단계의 사용자 정의 이름입니다.action(문자열, 필수): 호출할 도우미 작업입니다. 지원되는 작업:Shell: VM에서 터미널 스크립트를 실행합니다.FileCopy: Cloud Storage 버킷 또는 작업공간에서 애셋을 전송합니다.UpdateKernelCommandLine: 부팅 매개변수를 업데이트합니다.InstallGPU: NVIDIA GPU 드라이버를 등록합니다.
inputs(객체, 필수): 선택한 작업에 필요한 키-값 속성입니다. 전체 매개변수 참조 및 예시는 지원되는 맞춤설정 작업을 참고하세요.
다음 스니펫에서는 Shell 작업을 사용하는 단계의 예를 보여줍니다.
spec: steps: - name: setup-environment action: Shell inputs: inlineScript: | #!/usr/bin/env bash echo "Running customization..."
다음 단계
- 지원되는 맞춤설정 작업에서 맞춤설정 단계의 세부 입력 스키마, 매개변수 참조, 사용 예시를 살펴보세요.
- Cloud Build 구성 파일 스키마에서 파이프라인 오케스트레이션 설정을 구성하는 방법을 알아보세요.
- 단계별 튜토리얼에 따라 Image Builder 파이프라인을 만드세요.