Создание пула в Azure с помощью Python SDK - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь создать пул на основе стандартного рыночного образа Ubuntu.Я использую Azure 4.0.0 , ссылка на изображение , ссылка на конфигурацию vm и другие вещи написаны на основе docs.microsoft.com

Вот мой код:

import azure.batch as batch
from azure.batch import BatchServiceClient
from azure.batch.batch_auth import SharedKeyCredentials
from azure.batch import models
import sys

account = 'mybatch'
key = 'Acj1hh7vMR6DSodYgYEghjce7mHmfgfdgodYgYEghjce7mHmfgodYgYEghjce7mHmfgCj/7f3Zs1rHdfgPsdlA=='
batch_url = 'https://mybatch.westeurope.batch.azure.com'

creds = SharedKeyCredentials(account, key)
batch_client = BatchServiceClient(creds, base_url = batch_url)


pool_id = 'mypool3'

if batch_client.pool.exists( pool_id ):
  print( 'pool exists' )
  sys.exit()

vmc = models.VirtualMachineConfiguration(
  image_reference = models.ImageReference(
    offer = 'UbuntuServer', 
    publisher = 'Canonical',
    sku = '16.04.0-LTS', 
    version = 'latest', 
    virtual_machine_image_id = None
  ) ,
  node_agent_sku_id = 'batch.node.ubuntu 16.04'
)

pool_config = models.CloudServiceConfiguration(os_family = '5')

new_pool = models.PoolAddParameter(
  id = pool_id, 
  vm_size = 'small', 
  cloud_service_configuration = pool_config, 
  target_dedicated_nodes = 1,
  virtual_machine_configuration = vmc
)

batch_client.pool.add(new_pool)

Вот некоторые значения изображений, которые я взял с портала Azure (Добавить редактор JSON пула):

>

"imageReference": {

" издатель ":" Canonical ",

" offer ":" UbuntuServer ",

" sku ":" 16.04.0-LTS "

},

Но когда я запускаю код, я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "a.py", line 80, in <module>
    batch_client.pool.add(new_pool)
  File "/root/miniconda/lib/python3.6/site-packages/azure/batch/operations/pool_operations.py", line 310, in add
    raise models.BatchErrorException(self._deserialize, response)
azure.batch.models.batch_error_py3.BatchErrorException: {'additional_properties': {}, 'lang': 'en-US', 'value': 'The value provided for one of the properties in the request body is invalid.\nRequestId:d8a1f7fa-6f40-4e4e-8f41-7958egas6efa\nTime:2018-12-05T16:18:44.5453610Z'}

Какие значения изображения неверны?Можно ли получить дополнительную информацию об этой ошибке с RequestId?


UPDATE

Я нашел более новый пример здесь , который используетэтот помощник select_latest_verified_vm_image_with_node_agent_sku для получения изображения ref.Та же ошибка The value provided for one of the properties in the request body is invalid.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Я думаю, что в сети есть несколько запутанных примеров, или они просто соответствуют более старой версии SDK.

Копание глубже в документах, которые я нашел это .

cloud_service_configuration CloudServiceConfiguration Конфигурация облачной службы для пула. Это свойство и virtualMachineConfiguration являются взаимоисключающими , и необходимо указать одно из свойств.Это свойство нельзя указать, если учетная запись пакетной службы была создана со свойством poolAllocationMode, установленным в «UserSubscription».

В моем случае я мог бы использовать только cloud_service_configuration = pool_config или virtual_machine_configuration = vmc, но не оба одновременно.

Это рабочий код:

new_pool = models.PoolAddParameter(
  id = pool_id, 
  vm_size = 'BASIC_A1', 
  target_dedicated_nodes = 1,
  virtual_machine_configuration = vmc
)
0 голосов
/ 06 декабря 2018

Я сделал тест с вашим кодом и получил ту же ошибку.Затем я исследую и изменяю некоторые вещи в коде.И проблема вызвана двумя вещами.

Первый :

pool_config = models.CloudServiceConfiguration(os_family = '5')

Вы можете взглянуть на описание models.CloudServiceConfiguration:

os_family: The Azure Guest OS family to be installed on the virtual
     machines in the pool. Possible values are: 2 - OS Family 2, equivalent to
     Windows Server 2008 R2 SP1. 3 - OS Family 3, equivalent to Windows Server
     2012. 4 - OS Family 4, equivalent to Windows Server 2012 R2. 5 - OS Family
     5, equivalent to Windows Server 2016. For more information, see Azure
     Guest OS Releases

Может быть, это свойствонабор для окон.Вы можете убрать эту конфигурацию.

Секунда :

vm_size = 'small', 

Вы должны установить vmSize с реальным размером виртуальной машины.Например, Standard_A1 .См. Выбор размера виртуальной машины для вычислительных узлов в пуле пакетов Azure .

Надеюсь, это поможет вам.Если вам нужна дополнительная помощь, пожалуйста, дайте мне сообщение.

...