2016-04-27 15 views
1

VM create failed with is osDisk Fehler: msrestazure.azure_exceptions.CloudError: Die Eigenschaft 'osDisk.image.uri' ist nicht erlaubt.Azure python vm create schlägt fehl beim Versuch, ein Image mit benutzerdefiniertem Image zu erstellen

-Code-Schnipsel ist wie folgt:

storage_profile=azure.mgmt.compute.models.StorageProfile(
      os_disk=azure.mgmt.compute.models.OSDisk(
       caching=azure.mgmt.compute.models.CachingTypes.none, 
       create_option=azure.mgmt.compute.models.DiskCreateOptionTypes.from_image, 
       name=OS_DISK_NAME, 
       os_type='Linux', 
       vhd=azure.mgmt.compute.models.VirtualHardDisk(
        uri='https://{0}.blob.core.windows.net/vhds/{1}.vhd'.format(
         STORAGE_NAME, 
         OS_DISK_NAME, 
        ), 
       ), 
       image=azure.mgmt.compute.models.VirtualHardDisk(
        uri='https://xxxxxxxxx.blob.core.windows.net/vm-images/Centos67-Azure.vhd' 
       ), 
      ) 

Bild wird in der Python-API definiert und die URi arbeitet definiert fein mit dem Azure CLI

API azur == 2.0.0rc3

Wenn Es hilft, dass die Transaktion an azur gesendet wird:

url: hps: //management.azure.com/subscriptions/b 97ddb69-f825-48b4-9e19-48eb3b4c8267/resourceGroups/dev-eu-vnet9-rg/Anbieter/Microsoft.Compute/Virtualmachines/centos67-api

Kopfparameter: { 'accept-language': ‚en- US ',' Inhaltstyp ':' application/json; charset = UTF-8' , 'X-MS-client-request-id': 'f65196f4-0e3b-11e6-A61B-b499baffc71a'}

Körpergehalt: { 'Eigenschaften': { 'storageProfile': {'osDisk': {'osType': 'Linux', 'createOption': 'fromImage', 'Name': 'centos67-api', 'caching': 'Keine', 'vhd': {'uri': ' https://deveuvnet9rg9944.blob.core.windows.net/vhds/centos67-api.vhd '},' image ': {' uri ':' https://deveuvnet9rg9944.blob.core.windows.net/vm-images/Centos67-Azure.vhd '}}},' Hardwareprofil ': {' vmSize ':' Standard_DS1 '},' osProfile ': {' adminUsername ':' cloud_user ',' Computername ' : 'centos67-api', 'adminPassword': 'xxxxxxxx'}, 'Netzwerkprofil': {'networkInterfaces': [{'id': '/ subscriptions/b97ddb69-f825-48b4-9e19-48eb3b4c8267/resourceGroups/dev-eu -vnet9-rg/providers/Microsoft.Network/networkInterfaces/centos67-api '}]}},' location ':' eastus '}

Traceback (letzter Aufruf zuletzt): Datei "./azure_client.py", Zeile 220, in result.wait() # asynchrone Operation Datei "/usr/lib/python2.7/site-packages/msrestazure/ azure_operation.py ", Zeile 639, in Warteposition raise self._exception msrestazure.azure_exceptions.CloudError: Ändern der Eigenschaft 'osDisk.image.uri' ist nicht zulässig.

+0

aus der Klassendefinition für OSDisk: –

+0

Entsprechend dem Dokument für REST API [Erstellen oder Aktualisieren einer virtuellen Maschine] (https://msdn.microsoft.com/en-us/library/azure/mt163591.aspx), Der Inhalt des Anfragetext enthält nicht die Eigenschaft 'image' der' osDisk' für das 'storageProfile'. –

Antwort

0

Gemäß der document die Klasse StorageProfile Konstruktion Funktion hat drei Parameter sind: image_reference, os_disk und data_disk. Der Parameter image in Ihrem Code sollte die Klasse azure.mgmt.compute.models.ImageReference, nicht die Klasse azure.mgmt.compute.models.VirtualHardDisk sein.

Als Referenz ist hier der Beispielcode aus der document.

storage_profile=azure.mgmt.compute.models.StorageProfile(
    os_disk=azure.mgmt.compute.models.OSDisk(
     caching=azure.mgmt.compute.models.CachingTypes.none, 
     create_option=azure.mgmt.compute.models.DiskCreateOptionTypes.from_image, 
     name=OS_DISK_NAME, 
     vhd=azure.mgmt.compute.models.VirtualHardDisk(
      uri='https://{0}.blob.core.windows.net/vhds/{1}.vhd'.format(
       STORAGE_NAME, 
       OS_DISK_NAME, 
      ), 
     ), 
    ), 
    image_reference = azure.mgmt.compute.models.ImageReference(
     publisher=IMAGE_PUBLISHER, 
     offer=IMAGE_OFFER, 
     sku=IMAGE_SKU, 
     version=IMAGE_VERSION, 
    ), 
) 

Ich hoffe, es hilft. Jede Sorge, bitte zögern Sie nicht, lassen Sie es mich wissen.

+0

ImageReference ist für die Verwendung von veröffentlichten Bildern aus dem Azure Store, nicht für benutzerdefinierte hochgeladene Bilder Azure. Das funktioniert ganz gut. Leider muss ich benutzerdefinierte Bilder verwenden, die wir erstellen und hochladen –

+0

Dies ist ein Teil der Definition für OSDisk. Schauen Sie sich die Definition für Bild Klasse OSDisk (Modell): ""“ Beschreibt ein Betriebssystem Platten ... :. Param Bild: Ruft die Quelle User Image VirtualHardDisk Diese VirtualHardDisk kopiert. bevor sie es zum virtuellen machine.If source befestigen vorgesehen ist, gibt es das Ziel VirtualHardDisk sollte nicht :. Typ Bild: class: 'VirtualHardDisk ' .. . –

0

Das Problem wurde behoben. Es stellte sich heraus, dass der zurückgegebene Fehler etwas irreführend ist. Das Problem bestand darin, dass die Zielfestplatte bereits existierte und daher nicht geändert werden konnte (d. H. Eigenschaftsfehler ändern).

Sobald das Ziel einen eindeutigen Namen hatte, funktionierte der Prozess ordnungsgemäß und ich konnte VMs von meinem benutzerdefinierten Image erstellen.

Verwandte Themen