2017-03-02 13 views
4

次のjsonテンプレートを使用して仮想マシンを作成する際に、複数のデータディスクを仮想マシンに追加しました。単一の仮想マシンを作成しながら、Azure仮想マシンのデータディスクを作成するにはどうすればいいですか?

"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": { 
      ....... 
      } 
     } 
    } 
} 
] 

このコードは正常に動作しますが、複数の仮想マシンを作成しながら、マシンは作成できませんでした。これは、最初のマシンのデータディスク用に作成されたvhdが他のマシンと同じであるためです。

別の名前のvhdを作成する方法はありますか? コピーインデックスを渡そうとしましたが機能しません。

答えて

2

確かに、それを行うテンプレートへのリンクを貼り付け、それがどのように機能するかを説明します。ここにはlinkがあります。

これを行うには、ディスク名にcopyindex(またはそのようなもの)を追加する必要があります。その方法の1つは、ディスクが入ったオブジェクトを返すネストされたテンプレートを使用することです。テンプレートを呼び出す際にcopyindexをパラメータとして使用できます。

This isここで、ネストされた配置を作成してディスクオブジェクトを作成します。
here出力を使用してディスクを作成します。

+0

上記のサンプルjsonを実行すると、次のエラーが表示されます。New-AzureRmResourceGroupDeployment:オブジェクト参照がオブジェクトのインスタンスに設定されていません。ラインで :1文字:13 + $応答=新AzureRmResourceGroupDeployment -ResourceGroupName $ ResourceGroup ... + ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ + CategoryInfo:CloseError:(:) [New-AzureRmResourceGroupDeployment]、NullReferenceException + FullyQualifiedErrorId:Microsoft.Azure.Commands.Resources.NewAzureResourceGroupDeploymentCommand –

+0

ただし、仮想マシンはデータディスクで正しく作成されます。 –

+1

あなたが間違っていることは分かりませんが、これはうまくいきます。これがあなたが求めていることがあれば、これを答えとして受け入れてください;)私はこのデプロイメントをテストしたところ、うまくいきました。 'New-AzureRmResourceGroupDeployment -Name test -ResourceGroupName zxc -TemplateUri https:// raw.githubusercontent.com/4c74356b41/armotron/master/ml-vm-ml-dd.json' – 4c74356b41

関連する問題