このページでは、ジョブを実行する仮想マシン(VM)インスタンスのオペレーティング システム(OS)イメージを指定する方法について説明します。あわせてジョブのブートディスクの他のプロパティをカスタマイズする場合は、カスタム ブートディスクを使用するジョブの作成と実行をご覧ください。
VM OS イメージと使用できる VM OS イメージの詳細については、VM OS 環境の概要をご覧ください。
準備
- Batch を以前に使用したことがなかった場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
-
ジョブの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
プロジェクトのバッチジョブ編集者(
roles/batch.jobsEditor
) -
ジョブのサービス アカウントのサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)。これは、デフォルトでは Compute Engine のデフォルトのサービス アカウントです。
ロールの付与の詳細については、アクセスの管理をご覧ください。
-
プロジェクトのバッチジョブ編集者(
特定の VM OS イメージを使用するジョブを作成して実行する
ジョブの作成時に VM OS イメージを指定するには、次のいずれかの方法を選択します。
- VM OS イメージを指定する Compute Engine インスタンス テンプレートを使用する。このジョブの作成中に VM インスタンス テンプレートを使用する場合は、VM インスタンス テンプレートで VM OS イメージを指定する必要があります。手順については、VM インスタンス テンプレートを使用してジョブリソースを定義するをご覧ください。
VM OS イメージ フィールドを使用する。 次の手順に示すように、gcloud CLI または Batch API を使用して
image
フィールドで VM OS イメージを指定できます。
gcloud
ジョブの構成の詳細を指定する 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 イメージのリストを表示します。
ジョブを作成するには、次の
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
: プロジェクトのプロジェクト IDLOCATION
: このジョブのロケーション。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 イメージのリストを表示します。
次のステップ
- ジョブの作成または実行に問題がある場合は、トラブルシューティングをご覧ください。
- VM OS イメージについて学習する。
- ジョブの作成の詳細を確認する。
- ジョブとタスクを表示する方法を確認する。