本页面介绍如何为作业运行的虚拟机 (VM) 实例指定操作系统 (OS) 映像。 如果您还想自定义作业启动磁盘的其他属性,请参阅 创建和运行使用自定义启动磁盘的作业 。
如需详细了解虚拟机操作系统映像以及您可以使用的虚拟机操作系统映像,请参阅 虚拟机操作系统环境概览。
准备工作
- 如果您之前未使用过 Batch,请查看 Batch 使用入门 ,并完成 项目和用户的前提条件,以启用 Batch。
-
如需获得创建作业所需的权限,请让您的管理员授予您以下 IAM 角色:
- Batch Job Editor (
roles/batch.jobsEditor) 项目的 - Service Account User (
roles/iam.serviceAccountUser) 在作业的服务账号上,默认情况下为默认 Compute Engine 服务账号
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
- Batch Job Editor (
创建和运行使用特定虚拟机操作系统映像的作业
创建作业时,请通过选择以下方法之一来指定虚拟机操作系统映像:
- 使用指定了虚拟机操作系统映像的 Compute Engine 实例模板。 如果您想在创建此作业时使用虚拟机实例模板,则必须在虚拟机实例模板中指定虚拟机操作系统映像。 如需相关说明,请参阅 使用虚拟机实例模板定义作业资源。
使用虚拟机操作系统映像字段。如以下说明中所述,您可以 使用 gcloud CLI 或 Batch API 在
image字段 中指定虚拟机操作系统映像。
gcloud
创建一个 JSON 文件,用于指定作业的配置详细信息。 如需为作业指定虚拟机操作系统映像,请添加
image字段。例如,如需创建使用特定虚拟机操作系统映像的基本脚本作业,请创建一个包含以下内容的 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替换为虚拟机操作系统映像的 相对资源名称 。使用以下任一选项:指定 Batch 操作系统前缀。如需使用特定 Batch 操作系统的最新映像,请使用以下格式:
BATCH_OS_PREFIX将
BATCH_OS_PREFIX替换为 Batch 虚拟机操作系统映像前缀之一,例如batch-debian是 Batch Debian 操作系统的相应前缀。指定映像系列。如需使用特定映像系列的最新映像,请使用以下格式:
projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY替换以下内容:
IMAGE_PROJECT_ID:包含映像的项目的 项目 ID 。例如,对于所有 Batch 映像,请指定batch-custom-image。IMAGE_FAMILY:映像系列,其中 包含一个或多个特定映像,并表示操作系统的类型和 主要版本 。例如,如需查看 Batch 中的所有虚拟机操作系统映像系列,请查看虚拟机操作系统映像列表。
指定映像版本。如需使用特定版本的虚拟机操作系统映像,请使用以下格式:
projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME替换以下内容:
IMAGE_PROJECT_ID:包含映像的项目的 项目 ID 。例如,对于所有 Batch 映像,请指定batch-custom-image。IMAGE_NAME:映像名称,表示特定版本的虚拟机操作系统映像。 例如,如需查看 Batch 中的所有虚拟机操作系统映像版本,请查看虚拟机操作系统映像列表。
如需创建作业,请运行以下
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方法
并指定作业的配置详细信息。
如需为作业指定虚拟机操作系统映像,请添加
image字段。
例如,如需创建使用特定虚拟机操作系统映像的基本脚本作业,请发出以下 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:虚拟机操作系统映像的相对资源名称。使用以下任一选项:- 指定 Batch 操作系统前缀。如需使用特定 Batch 操作系统的最新映像,请使用以下格式:
BATCH_OS_PREFIX将
BATCH_OS_PREFIX替换为 Batch 虚拟机操作系统映像前缀之一,例如batch-debian是 Batch Debian 操作系统的相应前缀。指定映像系列。如需使用特定映像系列的最新映像,请使用以下格式:
projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY替换以下内容:
IMAGE_PROJECT_ID:包含映像的项目的 项目 ID 。例如,对于所有 Batch 映像,请指定batch-custom-image。IMAGE_FAMILY:映像系列,其中 包含一个或多个特定映像,并表示操作系统的类型和 主要版本 。例如,如需查看 Batch 中的所有虚拟机操作系统映像系列,请查看虚拟机操作系统映像列表。
指定映像版本。如需使用特定版本的虚拟机操作系统映像,请使用以下格式:
projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME替换以下内容:
IMAGE_PROJECT_ID:包含映像的项目的 项目 ID 。例如,对于所有 Batch 映像,请指定batch-custom-image。IMAGE_NAME:映像名称,表示特定版本的虚拟机操作系统映像。 例如,如需查看 Batch 中的所有虚拟机操作系统映像版本,请查看虚拟机操作系统映像列表。