ジョブ用の VM OS イメージを指定する

このページでは、ジョブを実行する仮想マシン(VM)インスタンスのオペレーティング システム(OS)イメージを指定する方法について説明します。あわせてジョブのブートディスクの他のプロパティをカスタマイズする場合は、カスタム ブートディスクを使用するジョブの作成と実行をご覧ください。

VM OS イメージと使用できる VM OS イメージの詳細については、VM OS 環境の概要をご覧ください。

準備

  1. Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
  2. ジョブの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

特定の VM OS イメージを使用するジョブを作成して実行する

ジョブを作成するときに、次のいずれかの方法を選択して VM OS イメージを指定します。

  • VM OS イメージを指定する Compute Engine インスタンス テンプレートを使用する。このジョブの作成中に VM インスタンス テンプレートを使用する場合は、VM インスタンス テンプレートで VM OS イメージを指定する必要があります。手順については、VM インスタンス テンプレートを使用してジョブリソースを定義するをご覧ください。
  • [VM OS イメージ] フィールドを使用する。次の手順に示すように、gcloud CLI または Batch API を使用して image フィールドで VM OS イメージを指定できます。

gcloud

  1. ジョブの構成の詳細を指定する JSON ファイルを作成します。ジョブの VM OS イメージを指定するには、image フィールドを含めます。

    たとえば、特定の VM OS イメージを使用する基本的なスクリプト ジョブを作成するには、次の内容の JSON ファイルを作成します。

    {
        "taskGroups": [
            {
                "taskSpec": {
                    "runnables": [
                        {
                            "script": {
                                "text": "echo Hello world from task ${BATCH_TASK_INDEX}."
                            }
                        }
                    ]
                },
                "taskCount": 3,
                "parallelism": 1
            }
        ],
        "allocationPolicy": {
          "instances": [
            {
              "policy": {
                "bootDisk": {
                  "image": "VM_OS_IMAGE_URI"
                }
              }
            }
          ]
        },
        "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    

    VM_OS_IMAGE_URI は、VM OS イメージの相対リソース名に置き換えます。以下のいずれかの方法を選択します。

    • Batch OS 接頭辞を指定する。 特定の Batch OS の最新イメージを使用するには、次の形式を使用します。

      BATCH_OS_PREFIX
      

      BATCH_OS_PREFIX は、Batch VM OS イメージ接頭辞のいずれかに置き換えます。たとえば、batch-debian は Batch Debian OS の接頭辞です。

    • イメージ ファミリーを指定する。 特定のイメージ ファミリーの最新のイメージを使用するには、次の形式を使用します。

      projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY
      

      以下を置き換えます。

      • IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには batch-custom-image を指定します。
      • IMAGE_FAMILY: イメージ ファミリー。1 つ以上の特定のイメージが含まれ、OS の種類とメジャー バージョンを表します。たとえば、Batch のすべての VM OS イメージ ファミリーを確認するには、VM OS イメージのリストを表示します。
    • イメージのバージョンを指定する。 特定のバージョンの VM OS イメージを使用するには、次の形式を使用します。

      projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME
      

      以下を置き換えます。

      • IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには batch-custom-image を指定します。
      • IMAGE_NAME: イメージ名。VM OS イメージの特定のバージョンを表します。たとえば、Batch のすべての VM OS イメージ バージョンを確認するには、VM OS イメージのリストを表示します。
  2. ジョブを作成するには、次の gcloud batch jobs submit コマンドを実行します。

    gcloud batch jobs submit JOB_NAME \
        --location LOCATION \
        --config JSON_CONFIGURATION_FILE
    

    以下を置き換えます。

    • JOB_NAME: このジョブの名前。
    • LOCATION: このジョブのロケーション
    • JSON_CONFIGURATION_FILE: ジョブの構成の詳細を含む JSON ファイルへのパス。

API

Batch API を使用してジョブを作成するには、jobs.create メソッドを使用してジョブの構成の詳細を指定します。ジョブの VM OS イメージを指定するには、image フィールドを含めます。たとえば、特定の VM OS イメージを使用する基本的なスクリプト ジョブを作成するには、次の POST リクエストを行います。

POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME

{
    "taskGroups": [
        {
            "taskSpec": {
                "runnables": [
                    {
                        "script": {
                            "text": "echo Hello world from task ${BATCH_TASK_INDEX}."
                        }
                    }
                ]
            },
            "taskCount": 3,
            "parallelism": 1
        }
    ],
    "allocationPolicy": {
      "instances": [
        {
          "policy": {
            "bootDisk": {
              "image": "VM_OS_IMAGE_URI"
            }
          }
        }
      ]
    },
    "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

以下を置き換えます。

  • PROJECT_ID: プロジェクトのプロジェクト ID
  • LOCATION: このジョブのロケーション
  • JOB_NAME: このジョブの名前。
  • VM_OS_IMAGE_URI: VM OS イメージの相対リソース名。以下のいずれかの方法を選択します。

    • Batch OS 接頭辞を指定する。 特定の Batch OS の最新イメージを使用するには、次の形式を使用します。
    BATCH_OS_PREFIX
    

    BATCH_OS_PREFIX は、Batch VM OS イメージ接頭辞のいずれかに置き換えます。たとえば、batch-debian は Batch Debian OS の接頭辞です。

    • イメージ ファミリーを指定する。 特定のイメージ ファミリーの最新のイメージを使用するには、次の形式を使用します。

      projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY
      

      以下を置き換えます。

      • IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには batch-custom-image を指定します。
      • IMAGE_FAMILY: イメージ ファミリー。1 つ以上の特定のイメージが含まれ、OS の種類とメジャー バージョンを表します。たとえば、Batch のすべての VM OS イメージ ファミリーを確認するには、VM OS イメージのリストを表示します。
    • イメージのバージョンを指定する。 特定のバージョンの VM OS イメージを使用するには、次の形式を使用します。

      projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME
      

      以下を置き換えます。

      • IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには batch-custom-image を指定します。
      • IMAGE_NAME: イメージ名。VM OS イメージの特定のバージョンを表します。たとえば、Batch のすべての VM OS イメージ バージョンを確認するには、VM OS イメージのリストを表示します。

次のステップ