2017-03-02 5 views
4

Ich habe mehrere virtuelle Maschinen virtuellen Datenträgern hinzugefügt, während virtuelle Maschinen mit der folgenden JSON-Vorlage erstellt wurden.Wie erstellt man Datenfestplatten für azure virtuelle Maschinen?

"variables": { 
"diskArray": [ 
{ 
"name": "datadisk1", 
"lun": 0, 
"vhd": { 
"uri": "[concat('http://', variables('storageAccountName'),'.blob.core.windows.net/vhds/','datadisk1.vhd')]" 
     }, 
     "createOption": "Empty",  
     "caching": "ReadWrite",  
     "diskSizeGB": 300  
     },  
     {  
     "name": "datadisk2", 
     "lun": 1, 
     "vhd": { 
      "uri": "[concat('http://', variables('storageAccountName'),'.blob.core.windows.net/vhds/', 'datadisk2.vhd')]"  
     }, 
     "createOption": "Empty",  
     "caching": "ReadWrite",  
     "diskSizeGB": 200 
     }, 
     { 
     "name": "datadisk3", 
     "lun": 2, 
     "vhd": { 
      "uri": "[concat('http://', variables('storageAccountName'),'.blob.core.windows.net/vhds/', 'datadisk3.vhd')]" 
     }, 
     "createOption": "Empty", 
     "caching": "ReadWrite", 
     "diskSizeGB": 100 
     } 
]  
    },  
.....  
..... 
"resources": [ 
    { 
     "apiVersion": "2015-06-15", 
     "type": "Microsoft.Compute/virtualMachines", 
     "name": "[concat(parameters('VmPrefix'), copyindex(1))]", 
     "copy": { 
     "name": "Datanode", 
     "count": "[variables('vmcount')]" 
     }, 
     "location": "[resourceGroup().location]", 
     "properties": { 
     ...... 
     ...... 
     "storageProfile": { 
      "imageReference": { 
      ........ 
      }, 
      "dataDisks": "[take(variables('diskArray'),parameters('numDataDisks'))]", 
      "osDisk": { 
      ....... 
      } 
     } 
    } 
} 
] 

Dieser Code funktioniert gut, während einzelne virtuelle Maschine erstellen, aber während mehrere virtuelle Maschinen erstellen, ist fehlgeschlagen Maschinen zu erstellen. Dies liegt daran, dass vhd für Datadisks für die erste Maschine erstellt wurde, genauso wie für andere Maschinen.

Gibt es eine Möglichkeit, eine VHD mit anderem Namen zu erstellen? Versuchte Kopie Index übergeben, funktioniert aber nicht.

Antwort

2

Sicher gibt es, ich werde einen Link zu einer Vorlage einfügen, die das tun und erklären, wie es funktioniert. Hier ist die link.

Also, um dies zu tun, müssen Sie kopieren Index (oder etwas ähnliches) in den Namen der Festplatte, eine der Möglichkeiten, dies zu tun, ist eine verschachtelte Vorlage verwenden, die ein Objekt mit Festplatten zurückgibt, Und während Sie die Vorlage aufrufen, können Sie copyindex als Parameter dafür verwenden.

This is Hier erstellen Sie eine geschachtelte Bereitstellung, um ein Festplattenobjekt zu erstellen.
Und here verwenden Sie die Ausgabe zum Erstellen von Festplatten.

+0

Beim Ausführen des obigen Beispiel-JSON habe ich den folgenden Fehler: New-AzureRmResourceGroupDeployment: Objektreferenz nicht auf eine Instanz eines Objekts festgelegt. Bei Zeile: 1 Zeichen: 13 + $ response = New-AzureRmResourceGroupDeployment -ResourceGroupName $ ResourceGroup ... + ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~ + CategoryInfo: CloseError: (:) [Neu-AzureRmResourceGroupDeployment], NullReferenceException + FullyQualifiedErrorId: Microsoft.Azure.Commands.Resources.NewAzureResourceGroupDeploymentCommand –

+0

aber virtuelle Maschinen werden ordnungsgemäß mit Datenträgern erstellt. –

+1

Nun, ich bin mir nicht sicher, was du falsch machst, für mich funktioniert das gut, wenn das tut, was du verlangst, nimm das als Antwort an;) Ich habe gerade diesen Einsatz getestet und es hat gut funktioniert. 'New-AzureRmResourceGroupDeployment-Name test -ResourceGroupName zxc -TemplateUri https: // raw.githubusercontent.com/4c74356b41/armotron/master/ml-vm-ml-dd.json' – 4c74356b41

Verwandte Themen