このドキュメントでは、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 acceleratorType: nvidia-l4 acceleratorCount: 1 debug: false instanceDurationHours: 2.0 reservations: - RESERVATION_NAME
machineType(文字列、必須): ワーカー VM とテスト VM に使用する Compute Engine マシンタイプ(e2-standard-4など)。ベアメタル マシンタイプは対象外です。zone(文字列、必須): ワーカー VM とテスト VM が実行されるゾーン(us-central1-aなど)。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 パイプラインを作成する。