En esta página, se describe cómo especificar la imagen del sistema operativo (SO) para las instancias de máquina virtual (VM) en las que se ejecuta un trabajo. Si también deseas personalizar otras propiedades de los discos de arranque de la tarea, consulta Crea y ejecuta una tarea que use discos de arranque personalizados.
Para obtener más información sobre las imágenes de SO de VM y las que puedes usar, consulta la descripción general del entorno de SO de VM.
Antes de comenzar
- Si nunca antes usaste Batch, consulta Cómo comenzar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para obtener los permisos que necesitas para crear un trabajo, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que de forma predeterminada es la cuenta de servicio predeterminada de Compute Engine
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
-
Editor de trabajos por lotes (
Crea y ejecuta un trabajo que use una imagen de SO de VM específica
Especifica la imagen de SO de la VM cuando crees un trabajo seleccionando uno de los siguientes métodos:
- Usa una plantilla de instancias de Compute Engine que especifique una imagen del SO de la VM. Si deseas usar una plantilla de instancias de VM cuando crees esta tarea, debes especificar la imagen de SO de la VM en la plantilla de instancias de VM. Para obtener instrucciones, consulta Cómo definir recursos de trabajo con una plantilla de instancia de VM.
Usa el campo de imagen de SO de la VM. Como se explica en las siguientes instrucciones, puedes especificar la imagen de SO de la VM en el campo
image
con gcloud CLI o la API de Batch.
gcloud
Crea un archivo JSON que especifique los detalles de configuración de tu trabajo. Para especificar la imagen de SO de la VM para la tarea, incluye el campo
image
.Por ejemplo, para crear una tarea de secuencia de comandos básica que use una imagen del SO de VM específica, crea un archivo JSON con el siguiente contenido:
{ "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" } }
Reemplaza
VM_OS_IMAGE_URI
por un nombre de recurso relativo de la imagen de SO de la VM. Usa una de las siguientes opciones:Especifica un prefijo de SO por lotes. Para usar la imagen más reciente de un SO de lote específico, usa el siguiente formato:
BATCH_OS_PREFIX
Reemplaza
BATCH_OS_PREFIX
por uno de los prefijos de imagen de SO de la VM por lotes. Por ejemplo,batch-debian
es el prefijo del SO Debian por lotes.Especifica una familia de imágenes. Para usar la imagen más reciente de una familia de imágenes específica, usa el siguiente formato:
projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY
Reemplaza lo siguiente:
IMAGE_PROJECT_ID
: Es el ID del proyecto que contiene la imagen. Por ejemplo, para todas las imágenes de lotes, especificabatch-custom-image
.IMAGE_FAMILY
: Es la familia de imágenes, que incluye una o más imágenes específicas y representa el tipo y la versión principal del SO. Por ejemplo, para ver todas las familias de imagen de SO de VM desde Batch, consulta una lista de imágenes de SO de VM.
Especifica una versión de imagen. Para usar una versión específica de una imagen del SO de una VM, usa el siguiente formato:
projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME
Reemplaza lo siguiente:
IMAGE_PROJECT_ID
: Es el ID del proyecto que contiene la imagen. Por ejemplo, para todas las imágenes de lotes, especificabatch-custom-image
.IMAGE_NAME
: El nombre de la imagen, que representa una versión específica de una imagen de SO de la VM. Por ejemplo, para ver todas las versiones de la imagen de SO de la VM desde Batch, consulta una lista de imágenes del SO de la VM.
Para crear el trabajo, ejecuta el siguiente comando
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Reemplaza lo siguiente:
JOB_NAME
: Es el nombre de este trabajo.LOCATION
: La ubicación de este trabajo.JSON_CONFIGURATION_FILE
: Es la ruta de acceso al archivo JSON con los detalles de configuración de la tarea.
API
Para crear un trabajo con la API de Batch, usa el método jobs.create
y especifica los detalles de configuración de tu trabajo.
Para especificar la imagen de SO de la VM para la tarea, incluye el campo image
.
Por ejemplo, para crear un trabajo de secuencia de comandos básico que use una imagen de SO de VM específica,
realiza la siguiente solicitud 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"
}
}
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto de tu proyecto.LOCATION
: La ubicación de este trabajo.JOB_NAME
: Es el nombre de este trabajo.VM_OS_IMAGE_URI
: Un nombre de recurso relativo de la imagen de SO de la VM. Usa una de las siguientes opciones:- Especifica un prefijo de SO por lotes. Para usar la imagen más reciente de un SO de lote específico, usa el siguiente formato:
BATCH_OS_PREFIX
Reemplaza
BATCH_OS_PREFIX
por uno de los prefijos de imagen de SO de la VM por lotes. Por ejemplo,batch-debian
es el prefijo del SO Debian por lotes.Especifica una familia de imágenes. Para usar la imagen más reciente de una familia de imágenes específica, usa el siguiente formato:
projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY
Reemplaza lo siguiente:
IMAGE_PROJECT_ID
: Es el ID del proyecto que contiene la imagen. Por ejemplo, para todas las imágenes de lotes, especificabatch-custom-image
.IMAGE_FAMILY
: Es la familia de imágenes, que incluye una o más imágenes específicas y representa el tipo y la versión principal del SO. Por ejemplo, para ver todas las familias de imagen de SO de VM desde Batch, consulta una lista de imágenes de SO de VM.
Especifica una versión de imagen. Para usar una versión específica de una imagen del SO de una VM, usa el siguiente formato:
projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME
Reemplaza lo siguiente:
IMAGE_PROJECT_ID
: Es el ID del proyecto que contiene la imagen. Por ejemplo, para todas las imágenes de lotes, especificabatch-custom-image
.IMAGE_NAME
: El nombre de la imagen, que representa una versión específica de una imagen de SO de la VM. Por ejemplo, para ver todas las versiones de la imagen de SO de la VM desde Batch, consulta una lista de imágenes del SO de la VM.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar una tarea, consulta Solución de problemas.
- Obtén más información sobre las imágenes del SO de las VMs.
- Obtén más información para crear un trabajo.
- Obtén más información para ver trabajos y tareas.