このドキュメントでは、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 とテスト VM に使用する Compute Engine マシンタイプ。マシンタイプが、imageFamilyまたはimagePathで指定したソースイメージのアーキテクチャと一致していることを確認してください。たとえば、x86 イメージにはe2-standard-4、Arm イメージにはc4a-standard-4を使用します。ベアメタル マシンタイプは対象外です。zone(文字列、必須): ワーカー VM とテスト VM が実行されるゾーン(us-central1-aなど)。network(文字列、省略可): ワーカー VM と 検証テスト VM に接続する VPC ネットワーク(projects/<var>PROJECT_ID</var>/global/networks/<var>NETWORK_NAME</var>やdefaultなど)。省略すると、Image Builder はデフォルト ネットワークを使用します。subnetwork(文字列、省略可): ワーカー VM と検証テスト VM に接続する VPC サブネットワーク(projects/<var>PROJECT_ID</var>/regions/<var>REGION</var>/subnetworks/<var>SUBNET_NAME</var>など)。externalIP(文字列、省略可): ワーカー VM と検証テスト VM の外部 IP アドレスの割り当てを指定します。使用できる値:ephemeral(デフォルト): 共有プールからパブリック エフェメラル IPv4 アドレスを割り当てます。none: 外部 IP アドレスのない VM を作成します。この VM はプライベート VPC ネットワーキングのみを使用します。noneに設定する場合は、VM が必要な Google Cloud サービスと Package Repository にアクセスできるように、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(マップ、省略可): タグ付けメタデータの Key-Value ペア(env: productionなど)。signatureDatabaseFile(文字列、省略可): セキュアブート署名データベース ファイルへのリソースパス。storageLocations(文字列の配列、省略可): Compute Engine が最終的なディスクブロックを保存するターゲット ストレージ リージョン またはマルチリージョン(us-central1やusなど)。注: このプロパティはリストとしてフォーマットされますが、イメージの宛先ごとに指定できるロケーションは 1 つだけです。
仕様の構成
一般的な実行オプションを適用します。
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(オブジェクト、必須): 選択したアクションに必要な Key-Value プロパティ。パラメータ リファレンスと例については、サポートされているカスタマイズ アクションをご覧ください。
次のスニペットは、Shell アクションを使用したステップの例を示しています。
spec: steps: - name: setup-environment action: Shell inputs: inlineScript: | #!/usr/bin/env bash echo "Running customization..."
次のステップ
- サポートされているカスタマイズ アクションで、カスタマイズ ステップの詳細な入力スキーマ、パラメータ リファレンス、使用例を確認する。
- Cloud Build 構成ファイル スキーマでパイプライン オーケストレーション設定を構成する方法を学習する。
- ステップバイステップ チュートリアルに沿って Image Builder パイプラインを作成する。