Especifique a imagem do SO da VM para uma tarefa

Esta página descreve como especificar a imagem do sistema operativo (SO) para as instâncias de máquinas virtuais (VM) em que um trabalho é executado. Se também quiser personalizar outras propriedades dos discos de arranque da tarefa, consulte o artigo Crie e execute uma tarefa que use discos de arranque personalizados em alternativa.

Para saber mais sobre as imagens do SO de VMs e que imagens do SO de VMs pode usar, consulte a vista geral do ambiente do SO de VMs.

Antes de começar

  1. Se nunca usou o Batch, reveja o artigo Comece a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e utilizadores.
  2. Para receber as autorizações de que precisa para criar uma tarefa, peça ao seu administrador para lhe conceder as seguintes funções de IAM:

    Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Crie e execute uma tarefa que use uma imagem do SO de VM específica

Especifique a imagem do SO da VM quando estiver a criar uma tarefa selecionando um dos seguintes métodos:

  • Use um modelo de instância do Compute Engine que especifique uma imagem do SO da VM. Se quiser usar um modelo de instância de VM ao criar esta tarefa, tem de especificar a imagem do SO da VM no modelo de instância de VM. Para obter instruções, consulte o artigo Defina recursos de tarefas com um modelo de instância de VM.
  • Use o campo de imagem do SO da VM. Conforme explicado nas instruções seguintes, pode especificar a imagem do SO da VM no campo image através da CLI gcloud ou da API Batch.

gcloud

  1. Crie um ficheiro JSON que especifique os detalhes de configuração da sua tarefa. Para especificar a imagem do SO da VM para a tarefa, inclua o campo image.

    Por exemplo, para criar uma tarefa de script básica que use uma imagem de SO de VM específica, crie um ficheiro JSON com o seguinte conteúdo:

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

    Substitua VM_OS_IMAGE_URI por um nome do recurso relativo da imagem do SO da VM. Use uma das seguintes opções:

    • Especifique um prefixo do SO em lote. Para usar a imagem mais recente de um SO de lote específico, use o seguinte formato:

      BATCH_OS_PREFIX
      

      Substitua BATCH_OS_PREFIX por um dos prefixos de imagem do SO de VM em lote. Por exemplo, batch-debian é o prefixo do SO Debian em lote.

    • Especifique uma família de imagens. Para usar a imagem mais recente de uma família de imagens específica, use o seguinte formato:

      projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY
      

      Substitua o seguinte:

      • IMAGE_PROJECT_ID: o ID do projeto do projeto que contém a imagem. Por exemplo, para todas as imagens em lote, especifique batch-custom-image.
      • IMAGE_FAMILY: a família de imagens, que inclui uma ou mais imagens específicas e representa o tipo e a versão principal do SO. Por exemplo, para ver todas as famílias de imagens do SO de VMs do Batch, veja uma lista de imagens do SO de VMs.
    • Especifique uma versão da imagem. Para usar uma versão específica de uma imagem do SO de VM, use o seguinte formato:

      projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME
      

      Substitua o seguinte:

      • IMAGE_PROJECT_ID: o ID do projeto do projeto que contém a imagem. Por exemplo, para todas as imagens em lote, especifique batch-custom-image.
      • IMAGE_NAME: o nome da imagem, que representa uma versão específica de uma imagem do SO de uma VM. Por exemplo, para ver todas as versões de imagens do SO de VMs do Batch, veja uma lista de imagens do SO de VMs.
  2. Para criar a tarefa, execute o seguinte comando gcloud batch jobs submit:

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

    Substitua o seguinte:

    • JOB_NAME: o nome desta tarefa.
    • LOCATION: a localização para este trabalho.
    • JSON_CONFIGURATION_FILE: o caminho para o ficheiro JSON com os detalhes de configuração da tarefa.

API

Para criar uma tarefa através da API Batch, use o método jobs.create e especifique os detalhes de configuração da tarefa. Para especificar a imagem do SO da VM para a tarefa, inclua o campo image. Por exemplo, para criar uma tarefa de script básica que use uma imagem de SO de VM específica, faça o seguinte pedido 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"
  }
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto do seu projeto.
  • LOCATION: a localização para este trabalho.
  • JOB_NAME: o nome desta tarefa.
  • VM_OS_IMAGE_URI: um nome do recurso relativo da imagem do SO da VM. Use uma das seguintes opções:

    • Especifique um prefixo do SO em lote. Para usar a imagem mais recente de um SO de lote específico, use o seguinte formato:
    BATCH_OS_PREFIX
    

    Substitua BATCH_OS_PREFIX por um dos prefixos de imagem do SO de VM em lote. Por exemplo, batch-debian é o prefixo do SO Debian em lote.

    • Especifique uma família de imagens. Para usar a imagem mais recente de uma família de imagens específica, use o seguinte formato:

      projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY
      

      Substitua o seguinte:

      • IMAGE_PROJECT_ID: o ID do projeto do projeto que contém a imagem. Por exemplo, para todas as imagens em lote, especifique batch-custom-image.
      • IMAGE_FAMILY: a família de imagens, que inclui uma ou mais imagens específicas e representa o tipo e a versão principal do SO. Por exemplo, para ver todas as famílias de imagens do SO de VMs do Batch, veja uma lista de imagens do SO de VMs.
    • Especifique uma versão da imagem. Para usar uma versão específica de uma imagem do SO de VM, use o seguinte formato:

      projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME
      

      Substitua o seguinte:

      • IMAGE_PROJECT_ID: o ID do projeto do projeto que contém a imagem. Por exemplo, para todas as imagens em lote, especifique batch-custom-image.
      • IMAGE_NAME: o nome da imagem, que representa uma versão específica de uma imagem do SO de uma VM. Por exemplo, para ver todas as versões de imagens do SO de VMs do Batch, veja uma lista de imagens do SO de VMs.

O que se segue?