Spécifier l'image d'OS de la VM pour un job

Cette page explique comment spécifier l'image du système d'exploitation (OS) pour les instances de machine virtuelle (VM) sur lesquelles une tâche s'exécute. Si vous souhaitez également personnaliser d'autres propriétés des disques de démarrage de la tâche, consultez plutôt la section Créer et exécuter une tâche qui utilise des disques de démarrage personnalisés.

Pour en savoir plus sur les images d'OS de VM et les images d'OS de VM que vous pouvez utiliser, consultez la section Présentation de l'environnement d'OS de VM.

Avant de commencer

  1. Si vous n'avez jamais utilisé Batch, consultez Premiers pas avec Batch et activez Batch en remplissant les conditions préalables pour les projets et les utilisateurs.
  2. Pour obtenir les autorisations nécessaires à la création d'un job, demandez à votre administrateur de vous accorder le rôles IAM suivants:

    Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

    Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Créer et exécuter une tâche qui utilise une image d'OS de VM spécifique

Spécifiez l'image d'OS de la VM lorsque vous créez un job en sélectionnant l'une des méthodes suivantes:

  • Utilisez un modèle d'instance Compute Engine qui spécifie une image d'OS de VM. Si vous souhaitez utiliser un modèle d'instance de VM lors de la création de ce job, vous devez spécifier l'image de l'OS de la VM dans le modèle d'instance de VM. Pour obtenir des instructions, consultez la section Définir les ressources de tâche à l'aide d'un modèle d'instance de VM.
  • Utilisez le champ "Image d'OS de VM". Comme l'expliquent les instructions suivantes, vous pouvez spécifiez l'image d'OS de la VM Champ image à l'aide de gcloud CLI ou de l'API Batch.

gcloud

  1. Créez un fichier JSON qui spécifie les détails de configuration de votre job. Pour spécifier l'image d'OS de VM pour le job, incluez le paramètre Champ image.

    Par exemple, pour créer une tâche de script de base qui utilise une image d'OS de VM spécifique, créez un fichier JSON contenant le contenu suivant :

    {
        "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"
      }
    }
    

    Remplacez VM_OS_IMAGE_URI par un nom de ressource relatif de l'image d'OS de la VM. Utilisez l'une des options suivantes :

    • Spécifiez un préfixe Batch OS. Pour utiliser la dernière image d'un OS Batch spécifique, utilisez le format suivant :

      BATCH_OS_PREFIX
      

      Remplacez BATCH_OS_PREFIX par l'un des préfixes d'image d'OS de VM par lot. Par exemple, batch-debian est le préfixe de l'OS Debian par lot.

    • Spécifiez une famille d'images. Pour utiliser la dernière image d'une famille d'images, utilisez le format suivant:

      projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY
      

      Remplacez les éléments suivants :

      • IMAGE_PROJECT_ID: le ID du projet du projet qui contient l'image. Par exemple, pour tous les Images par lot, spécifiez batch-custom-image.
      • IMAGE_FAMILY: famille d'images, qui comprend une ou plusieurs images spécifiques et représente le type et version majeure de l'OS. Par exemple, pour voir toutes les familles d'images de VM de Affichez la liste des images d'OS de VM par lot.
    • Spécifiez une version d'image. Pour utiliser une version spécifique d'une image d'OS de VM, utilisez le format suivant :

      projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME
      

      Remplacez les éléments suivants :

      • IMAGE_PROJECT_ID : ID du projet contenant l'image. Par exemple, pour toutes les images de lot, spécifiez batch-custom-image.
      • IMAGE_NAME: nom de l'image, représente une version spécifique d'une image d'OS de VM. Par exemple, pour afficher toutes les versions de l'image d'OS de VM Affichez la liste des images d'OS de VM par lot.
  2. Pour créer la tâche, exécutez la commande gcloud batch jobs submit suivante :

    gcloud batch jobs submit JOB_NAME \
        --location LOCATION \
        --config JSON_CONFIGURATION_FILE
    

    Remplacez les éléments suivants :

    • JOB_NAME : nom de cette tâche.
    • LOCATION : emplacement de cette tâche.
    • JSON_CONFIGURATION_FILE : chemin d'accès au fichier JSON contenant les détails de configuration de la tâche.

API

Pour créer un job à l'aide de l'API Batch, utilisez la méthode Méthode jobs.create et spécifiez les détails de configuration de votre job. Pour spécifier l'image de l'OS de la VM pour la tâche, incluez le champ image. Par exemple, pour créer une tâche de script de base qui utilise une image d'OS VM spécifique, effectuez la requête POST suivante :

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"
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID: le ID du projet de votre projet.
  • LOCATION : emplacement de cette tâche.
  • JOB_NAME : nom de cette tâche.
  • VM_OS_IMAGE_URI : nom de ressource relatif de l'image de l'OS de la VM. Utilisez l'une des options suivantes :

    • Spécifiez un préfixe de système d'exploitation de traitement par lot. Pour utiliser la dernière version d'un Batch OS spécifique, utilisez la le format suivant:
    BATCH_OS_PREFIX
    

    Remplacez BATCH_OS_PREFIX par l'un des préfixes d'image d'OS de VM par lot. Par exemple, batch-debian est le préfixe de l'OS Debian par lot.

    • Spécifiez une famille d'images. Pour utiliser la dernière image d'une famille d'images, utilisez le format suivant:

      projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY
      

      Remplacez les éléments suivants :

      • IMAGE_PROJECT_ID: le ID du projet du projet qui contient l'image. Par exemple, pour tous les Images par lot, spécifiez batch-custom-image.
      • IMAGE_FAMILY: famille d'images, qui comprend une ou plusieurs images spécifiques et représente le type et version majeure de l'OS. Par exemple, pour afficher toutes les familles d'images de système d'exploitation de VM à partir de Batch, affichez la liste des images de système d'exploitation de VM.
    • Spécifiez une version d'image. Pour utiliser une version spécifique d'un système d'exploitation de VM utilisez le format suivant:

      projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME
      

      Remplacez les éléments suivants :

      • IMAGE_PROJECT_ID : ID du projet contenant l'image. Par exemple, pour toutes les images de lot, spécifiez batch-custom-image.
      • IMAGE_NAME : nom de l'image, qui représente une version spécifique d'une image d'OS de VM. Par exemple, pour afficher toutes les versions d'images d'OS de VM à partir de Batch, affichez une liste d'images d'OS de VM.

Étape suivante