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

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

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

準備

特定の 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 イメージのリストを表示します。

次のステップ