Especifica la imagen de SO de la VM para un trabajo

En esta página, se describe cómo especificar la imagen del sistema operativo (SO) para el 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 qué imágenes de SO de VM puedes usar, consulta Descripción general del entorno del SO de la VM.

Antes de comenzar

  1. Si nunca usaste Batch, revisa Comienza a usar Batch y habilitar Batch completando el requisitos previos para los proyectos y usuarios.
  2. A fin de obtener los permisos que necesitas para crear un trabajo, solicita a tu administrador que te otorgue el los siguientes roles de IAM:

    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.

Crea y ejecuta un trabajo que use una imagen de SO de VM específica

Para especificar la imagen de SO de la VM cuando crees un trabajo, selecciona una de las con los siguientes métodos:

  • Usa una plantilla de instancias de Compute Engine que especifique una imagen de SO de VM. Si deseas usar una plantilla de instancias de VM cuando crees esta tarea, debes especificar la imagen del SO de la VM en la plantilla de instancias de VM. Para obtener instrucciones, consulta Define recursos de trabajo mediante una plantilla de instancias de VM.
  • Usa el campo de imagen de SO de la VM. Como se explica en las siguientes instrucciones, puedes especificar la imagen del SO de la VM en el campo image con la CLI de gcloud o la API de Batch.

gcloud

  1. Crea un archivo JSON que especifique los detalles de configuración de tu trabajo. Para especificar la imagen de SO de la VM para el trabajo, incluye la Campo image.

    Por ejemplo, para crear un trabajo de secuencia de comandos básico que use un SO de VM específico 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 VM por lotes para ejemplo, batch-debian es el prefijo para el SO Batch Debian.

    • Especifica una familia de imágenes. Para usar la imagen más reciente de un de imágenes, usa el siguiente formato:

      projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY
      

      Reemplaza lo siguiente:

      • IMAGE_PROJECT_ID: el ID del proyecto del proyecto que contiene la imagen. Por ejemplo, para todos Imágenes por lotes, especifica batch-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 la VM de Batch, consulta una lista de imágenes de SO de la VM.
    • Especifica una versión de la 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: el ID del proyecto del proyecto que contiene la imagen. Por ejemplo, para todos Imágenes por lotes, especifica batch-custom-image.
      • IMAGE_NAME: Es el nombre de la imagen, que representa una versión específica de una imagen de SO de VM. Por ejemplo, para ver todas las versiones de imagen de SO de la VM Batch, consulta una lista de imágenes de SO de la VM.
  2. Para crear el trabajo, ejecuta el siguiente comando: 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: el location para este trabajo.
    • JSON_CONFIGURATION_FILE: Es la ruta de acceso a la Archivo JSON con los detalles de configuración del trabajo.

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 el trabajo, incluye la 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: el ID del proyecto de tu proyecto.
  • LOCATION: Es la ubicación. para 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 de Batch. Para usar la última de un SO de Batch específico, usa el con el siguiente formato:
    BATCH_OS_PREFIX
    

    Reemplaza BATCH_OS_PREFIX por uno de los prefijos de imagen del 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 un de imágenes, usa el siguiente formato:

      projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY
      

      Reemplaza lo siguiente:

      • IMAGE_PROJECT_ID: el ID del proyecto del proyecto que contiene la imagen. Por ejemplo, para todos Imágenes por lotes, especifica batch-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 versión principal del SO. Por ejemplo, para ver todas las familias de imagen de SO de la VM de Batch, consulta una lista de imágenes de SO de la VM.
    • Especifica una versión de imagen. Para usar una versión específica del SO de una VM utiliza 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 todos Imágenes por lotes, especifica batch-custom-image.
      • IMAGE_NAME: Es el nombre de la imagen, que representa una versión específica de una imagen de SO de VM. Por ejemplo, para ver todas las versiones de imagen de SO de la VM Batch, consulta una lista de imágenes de SO de la VM.

¿Qué sigue?