2016-02-10 10 views
5

Qualcuno ora come creare una VM da un VHD esistente nel nuovo portale azzurro?Crea VM dal VHD esistente: portale di anteprima

Sono in grado di trovare molte informazioni su come eseguire questa operazione in manage.windowsazure.com, ma nulla su questa funzionalità in portal.azure.com.

risposta

5

Non può essere fatto letteralmente nel portale. Dovrai usare PowerShell.

  1. Creare un conto di archiviazione. Ad esempio nel portale.

  2. Carica il VHD in blu. Per fare questo, eseguire la seguente riga in PowerShell dopo l'accesso con Login-AzureRmAccount (modificare i parametri tra <> e il percorso per il disco rigido virtuale sul vostro hard disk):

    Add-AzurermVhd -Destination "https://<StorageAccountName>.blob.core.windows.net/<containerName>/<vhdname>.vhd" -LocalFilePath "D:\Virtual Machines\myharddisk.vhd" -ResourceGroupName "<ResourceGroupName" -Overwrite 
    
  3. creare un modello ARM. Molteplici possibilità che puoi fare. Per esempio scegliere un modello dal Azure Quickstart templates, ad esempio 101

Quello che ho fatto è:

  • Creato un nuovo progetto in Visual Studio 2015.
  • Scegli il seguente progetto: cloud -> Azure Resource Group
  • Scegliere il modello seguente: Windows Virtual Machine

  • Modificato alcuni parametri e rimosso tutto ciò che non è necessario. Quello che fa ora è: creare una macchina virtuale Windows usando il disco rigido caricato come disco rigido. Sta usando un file json parametri ora, e anche alcune variabili devono essere impostate in WindowsVirtualMachine.json Questo potrebbe essere refactored ofcourse. ma per ora farà ciò che è necessario.

Per questo esempio si deve avere la seguente struttura di directory (proprio come Visual Studio lo crea)

ProjectDirectory/Scripts/Deploy-AzureResourceGroup.ps1 
ProjectDirectory/Templates/WindowsVirtualMachine.json 
ProjectDirectory/Templates/WindowsVirtualMachine.parameters.json 

Deploy-AzureResourceGroup.ps1

#Requires -Version 3.0 
#Requires -Module AzureRM.Resources 
#Requires -Module Azure.Storage 

Param(
    [string] [Parameter(Mandatory=$true)] $ResourceGroupLocation, 
    [string] $ResourceGroupName = 'CreateImage',  
    [string] $TemplateFile = '..\Templates\WindowsVirtualMachine.json', 
    [string] $TemplateParametersFile = '..\Templates\WindowsVirtualMachine.parameters.json' 
) 

Import-Module Azure -ErrorAction SilentlyContinue 

try { 
    [Microsoft.Azure.Common.Authentication.AzureSession]::ClientFactory.AddUserAgent("VSAzureTools-$UI$($host.name)".replace(" ","_"), "2.8") 
} catch { } 

Set-StrictMode -Version 3 

$OptionalParameters = New-Object -TypeName Hashtable 
$TemplateFile = [System.IO.Path]::Combine($PSScriptRoot, $TemplateFile) 
$TemplateParametersFile = [System.IO.Path]::Combine($PSScriptRoot, $TemplateParametersFile) 


# Create or update the resource group using the specified template file and template parameters file 
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $ResourceGroupLocation -Verbose -Force -ErrorAction Stop 

New-AzureRmResourceGroupDeployment -Name ((Get-ChildItem $TemplateFile).BaseName + '-' + ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm')) ` 
            -ResourceGroupName $ResourceGroupName ` 
            -TemplateFile $TemplateFile ` 
            -TemplateParameterFile $TemplateParametersFile ` 
            @OptionalParameters ` 
            -Force -Verbose 

WindowsVirtualMachine.json

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": {  
    "dnsNameForPublicIP": { 
     "type": "string", 
     "minLength": 1, 
     "metadata": { 
     "description": "Globally unique DNS Name for the Public IP used to access the Virtual Machine." 
     } 
    } 
    }, 
    "variables": { 
    "OSDiskName": "<vhdNameWithoutExtension>", 
    "vhdStorageContainerName": "<containerName>", 
    "storageAccountName": "<StorageAccountName>", 
    "nicName": "myVMNic", 
    "addressPrefix": "10.0.0.0/16", 
    "subnetName": "Subnet", 
    "subnetPrefix": "10.0.0.0/24", 
    "vhdStorageType": "Standard_LRS", 
    "publicIPAddressName": "myPublicIP", 
    "publicIPAddressType": "Dynamic", 
    "vhdStorageName": "[concat('vhdstorage', uniqueString(resourceGroup().id))]", 
    "vmName": "MyWindowsVM", 
    "vmSize": "Standard_A2", 
    "virtualNetworkName": "MyVNET", 
    "vnetId": "[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]", 
    "subnetRef": "[concat(variables('vnetId'), '/subnets/', variables('subnetName'))]" 
    }, 
    "resources": [ 
    { 
     "type": "Microsoft.Storage/storageAccounts", 
     "name": "[variables('vhdStorageName')]", 
     "apiVersion": "2015-06-15", 
     "location": "[resourceGroup().location]", 
     "tags": { 
     "displayName": "StorageAccount" 
     }, 
     "properties": { 
     "accountType": "[variables('vhdStorageType')]" 
     } 
    }, 
    { 
     "apiVersion": "2015-06-15", 
     "type": "Microsoft.Network/publicIPAddresses", 
     "name": "[variables('publicIPAddressName')]", 
     "location": "[resourceGroup().location]", 
     "tags": { 
     "displayName": "PublicIPAddress" 
     }, 
     "properties": { 
     "publicIPAllocationMethod": "[variables('publicIPAddressType')]", 
     "dnsSettings": { 
      "domainNameLabel": "[parameters('dnsNameForPublicIP')]" 
     } 
     } 
    }, 
    { 
     "apiVersion": "2015-06-15", 
     "type": "Microsoft.Network/virtualNetworks", 
     "name": "[variables('virtualNetworkName')]", 
     "location": "[resourceGroup().location]", 
     "tags": { 
     "displayName": "VirtualNetwork" 
     }, 
     "properties": { 
     "addressSpace": { 
      "addressPrefixes": [ 
      "[variables('addressPrefix')]" 
      ] 
     }, 
     "subnets": [ 
      { 
      "name": "[variables('subnetName')]", 
      "properties": { 
       "addressPrefix": "[variables('subnetPrefix')]" 
      } 
      } 
     ] 
     } 
    }, 
    { 
     "apiVersion": "2015-06-15", 
     "type": "Microsoft.Network/networkInterfaces", 
     "name": "[variables('nicName')]", 
     "location": "[resourceGroup().location]", 
     "tags": { 
     "displayName": "NetworkInterface" 
     }, 
     "dependsOn": [ 
     "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", 
     "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]" 
     ], 
     "properties": { 
     "ipConfigurations": [ 
      { 
      "name": "ipconfig1", 
      "properties": { 
       "privateIPAllocationMethod": "Dynamic", 
       "publicIPAddress": { 
       "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]" 
       }, 
       "subnet": { 
       "id": "[variables('subnetRef')]" 
       } 
      } 
      } 
     ] 
     } 
    }, 
    { 
     "apiVersion": "2015-06-15", 
     "type": "Microsoft.Compute/virtualMachines", 
     "name": "[variables('vmName')]", 
     "location": "[resourceGroup().location]", 
     "tags": { 
     "displayName": "VirtualMachine" 
     }, 
     "dependsOn": [ 
     "[concat('Microsoft.Storage/storageAccounts/', variables('vhdStorageName'))]", 
     "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]" 
     ], 
     "properties": { 
     "hardwareProfile": { 
      "vmSize": "[variables('vmSize')]" 
     },  
     "storageProfile": {   
      "osDisk": { 
      "name": "osdisk", 
      "osType": "Windows", 
      "vhd": { 
       "uri": "[concat('http://', variables('storageAccountName'), '.blob.core.windows.net/', variables('vhdStorageContainerName'), '/', variables('OSDiskName'), '.vhd')]" 
      }, 
      "caching": "ReadWrite", 
      "createOption": "Attach" 
      } 
     }, 
     "networkProfile": { 
      "networkInterfaces": [ 
      { 
       "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]" 
      } 
      ] 
     } 
     }  
    } 
    ] 
} 

WindowsVirtualMachine.parameters.json

{ 
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": {  
     "dnsNameForPublicIP": { 
      "value": "<someUniqueNameForYourDnsName>" 
     } 
    } 
} 
  1. Eseguire lo script PowerShell Aprire un comando PowerShell ed eseguire lo script ps1. Basta passare la posizione in cui si desidera che il vm da creare, come: (si dovrebbe già avere effettuato l'accesso con Login-AzureRmAccount)

    Prima di eseguire il cambiamento dei parametri in entrambi i file JSON!
    .\Deploy-AzureResourceGroup.ps1 "West Europe"

La registrazione dovrebbe dirvi che la VM viene creato correttamente.

+0

Questo ha funzionato perfettamente. Mille grazie – naylormat

+0

gesù, crea un progetto in Visual Studio per distribuire un VM in azzurro, hai davvero molto tempo a disposizione – 4c74356b41

3

Oggi (ottobre 2016) non può ancora essere fatto nel nuovo portale.

Ma per completezza: Si può fare nel vecchio portale (https://manage.windowsazure.com):

Fare clic su Nuovo - Compute - Virtual Machine - dalla Galleria. Sulla sinistra selezionare LE MIE IMMAGINI o I MIEI DISCHI e selezionare il VHD che si desidera utilizzare. Seguire le istruzioni come al solito.

Problemi correlati