新規作成から、データディスク8本を追加するのがだんだん面倒になりました。。。
そこで、SCOMのAzure Resource Manager VM Templeteを書いてみました。
ベースは、
githubのAzure Resource Manager テンプレートをカスタマイズしてみた - RDP接続できるVMテンプレート
です。
テンプレートをデプロイする際の前提は、リソースグループ、ストレージアカウント、仮想ネットワークは、構築済みであること。
今後の改善事項は、NICにDNSサーバー設定を入れ込むことでしょうか。
デプロイの画面。

実際にデプロイ後、ディスクの管理で確認。

記憶域プールでディスクをまとめたところ。

では、コードを下記に掲載しておきます。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string",
"defaultValue": "arscom2016",
"metadata": {
"description": "name for the Virtual Machine."
}
},
"dnsLabelPrefix": {
"type": "string",
"defaultValue": "arscom2016",
"metadata": {
"description": "Unique DNS Name for the Public IP used to access the Virtual Machine."
}
},
"adminUsername": {
"type": "string",
"metadata": {
"description": "Username for the Virtual Machine."
}
},
"adminPassword": {
"type": "securestring",
"metadata": {
"description": "Minimum 12 characters. Password for the Virtual Machine."
}
},
"windowsOSVersion": {
"type": "string",
"defaultValue": "2016-Datacenter",
"allowedValues": [
"2012-R2-Datacenter"
"2016-Datacenter"
],
"metadata": {
"description": "The Windows version for the VM. This will pick a fully patched image of this given Windows version. Allowed values: 2012-R2-Datacenter, 2016-Datacenter."
}
},
"vmSize": {
"type": "string",
"defaultValue": "Standard_DS3",
"allowedValues": [
"Standard_DS3_v2",
"Standard_DS3"
]
},
"vmDataDiskSize": {
"type": "int",
"defaultValue": 33
},
"rdpFrontend": {
"type": "int",
"defaultValue": 50001,
"metadata": {
"description": "Public port number for RDP"
}
},
"VNetName": {
"type": "string",
"defaultValue": "arejpVNet1"
},
"VSubnetName": {
"type": "string",
"defaultValue": "Subnet"
},
"storageAccountName": {
"type": "string",
"defaultValue": "arejpstorageact0"
}
},
"variables": {
"sizeOfDiskInGB": "[parameters('vmDataDiskSize')]",
"imagePublisher": "MicrosoftWindowsServer",
"imageOffer": "WindowsServer",
"vmName": "[parameters('vmName')]",
"vmSize": "[parameters('vmSize')]",
"OSDiskName": "[concat(variables('vmName'),'-os')]",
"dataDisk1VhdName": "[concat(variables('vmName'),'-data1')]",
"dataDisk2VhdName": "[concat(variables('vmName'),'-data2')]",
"dataDisk3VhdName": "[concat(variables('vmName'),'-data3')]",
"dataDisk4VhdName": "[concat(variables('vmName'),'-data4')]",
"dataDisk5VhdName": "[concat(variables('vmName'),'-data5')]",
"dataDisk6VhdName": "[concat(variables('vmName'),'-data6')]",
"dataDisk7VhdName": "[concat(variables('vmName'),'-data7')]",
"dataDisk8VhdName": "[concat(variables('vmName'),'-data8')]",
"nicName": "[concat(variables('vmName'),'-nic01')]",
"existingVNetName": "[parameters('VNetName')]",
"subnetName": "[parameters('VSubnetName')]",
"publicIPAddressName": "[concat(variables('vmName'),'-PublicIP01')]",
"publicIPAddressType": "Dynamic",
"vmStorageAccountContainerName": "[concat(variables('vmName'),'-vhds')]",
"vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('existingVNetName'))]",
"subnetRef": "[concat(variables('vnetID'),'/subnets/',variables('subnetName'))]",
"lbName": "[concat(parameters('vmName'),'-lb01')]",
"lbInboundNatRulesName": "[concat(parameters('vmName'),variables('lbName'),'-InboundNatRules01')]",
"lbFrontEndName": "[concat(parameters('vmName'),variables('lbName'),'-FrontEnd01')]",
"lbBackendAddressPoolName": "[concat(parameters('vmName'),variables('lbName'),'-BackendPool01')]",
"publicIPAddressID": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]",
"lbID": "[resourceId('Microsoft.Network/loadBalancers',variables('lbName'))]",
"lbFrontEndIPConfigID": "[concat(variables('lbID'),'/frontendIPConfigurations/',variables('lbFrontEndName'))]",
"lbPoolID": "[concat(variables('lbID'),'/backendAddressPools/',variables('lbBackendAddressPoolName'))]",
"lbNatID": "[concat(variables('lbID'),'/inboundNatRules/',variables('lbInboundNatRulesName'))]",
"apiVersion": "2015-06-15"
},
"resources": [
{
"apiVersion": "[variables('apiVersion')]",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[variables('publicIPAddressName')]",
"location": "[resourceGroup().location]",
"properties": {
"publicIPAllocationMethod": "[variables('publicIPAddressType')]",
"dnsSettings": {
"domainNameLabel": "[parameters('dnsLabelPrefix')]"
}
}
},
{
"apiVersion": "[variables('apiVersion')]",
"name": "[variables('lbName')]",
"type": "Microsoft.Network/loadBalancers",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]"
],
"properties": {
"frontendIPConfigurations": [
{
"name": "[variables('lbFrontEndName')]",
"properties": {
"publicIPAddress": {
"id": "[variables('publicIPAddressID')]"
}
}
}
],
"backendAddressPools": [
{
"name": "[variables('lbBackendAddressPoolName')]"
}
],
"inboundNatRules": [
{
"name": "[variables('lbInboundNatRulesName')]",
"properties": {
"frontendIPConfiguration": {
"id": "[variables('lbFrontEndIPConfigID')]"
},
"protocol": "tcp",
"frontendPort": "[parameters('rdpFrontend')]",
"backendPort": 3389,
"enableFloatingIP": false
}
}
]
}
},
{
"apiVersion": "[variables('apiVersion')]",
"type": "Microsoft.Network/networkInterfaces",
"name": "[variables('nicName')]",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Network/loadBalancers/',variables('lbName'))]"
],
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[variables('subnetRef')]"
},
"loadBalancerBackendAddressPools": [
{
"id": "[variables('lbPoolID')]"
}
],
"loadBalancerInboundNatRules": [
{
"id": "[variables('lbNatID')]"
}
]
}
}
]
}
},
{
"apiVersion": "[variables('apiVersion')]",
"type": "Microsoft.Compute/virtualMachines",
"name": "[variables('vmName')]",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
"properties": {
"hardwareProfile": {
"vmSize": "[variables('vmSize')]"
},
"osProfile": {
"computerName": "[variables('vmName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]"
},
"storageProfile": {
"imageReference": {
"publisher": "[variables('imagePublisher')]",
"offer": "[variables('imageOffer')]",
"sku": "[parameters('windowsOSVersion')]",
"version": "latest"
},
"osDisk": {
"name": "[variables('OSDiskName')]",
"vhd": {
"uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('OSDiskName'),'.vhd')]"
},
"caching": "ReadWrite",
"createOption": "FromImage"
},
"dataDisks": [
{
"name": "[variables('dataDisk1VhdName')]",
"diskSizeGB": "[variables('sizeOfDiskInGB')]",
"lun": 0,
"vhd": {
"uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk1VhdName'),'.vhd')]"
},
"createOption": "Empty"
},
{
"name": "[variables('dataDisk2VhdName')]",
"diskSizeGB": "[variables('sizeOfDiskInGB')]",
"lun": 1,
"vhd": {
"uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk2VhdName'),'.vhd')]"
},
"createOption": "Empty"
},
{
"name": "[variables('dataDisk3VhdName')]",
"diskSizeGB": "[variables('sizeOfDiskInGB')]",
"lun": 2,
"vhd": {
"uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk3VhdName'),'.vhd')]"
},
"createOption": "Empty"
},
{
"name": "[variables('dataDisk4VhdName')]",
"diskSizeGB": "[variables('sizeOfDiskInGB')]",
"lun": 3,
"vhd": {
"uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk4VhdName'),'.vhd')]"
},
"createOption": "Empty"
},
{
"name": "[variables('dataDisk5VhdName')]",
"diskSizeGB": "[variables('sizeOfDiskInGB')]",
"lun": 4,
"vhd": {
"uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk5VhdName'),'.vhd')]"
},
"createOption": "Empty"
},
{
"name": "[variables('dataDisk6VhdName')]",
"diskSizeGB": "[variables('sizeOfDiskInGB')]",
"lun": 5,
"vhd": {
"uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk6VhdName'),'.vhd')]"
},
"createOption": "Empty"
},
{
"name": "[variables('dataDisk7VhdName')]",
"diskSizeGB": "[variables('sizeOfDiskInGB')]",
"lun": 6,
"vhd": {
"uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk7VhdName'),'.vhd')]"
},
"createOption": "Empty"
},
{
"name": "[variables('dataDisk8VhdName')]",
"diskSizeGB": "[variables('sizeOfDiskInGB')]",
"lun": 7,
"vhd": {
"uri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net/',variables('vmStorageAccountContainerName'),'/',variables('dataDisk8VhdName'),'.vhd')]"
},
"createOption": "Empty"
}
]
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
}
]
},
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": "true",
"storageUri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net')]"
}
}
}
}
]
}
0 件のコメント:
コメントを投稿