Creare una macchina virtuale Windows usando un modello di Resource ManagerCreate a Windows virtual machine from a Resource Manager template

Questo articolo descrive come distribuire un modello di Azure Resource Manager tramite PowerShell.This article shows you how to deploy an Azure Resource Manager template using PowerShell. Il modello creato consente di distribuire una singola macchina virtuale che esegue Windows Server in una nuova rete virtuale con un'unica subnet.The template that you create deploys a single virtual machine running Windows Server in a new virtual network with a single subnet.

Per una descrizione dettagliata della risorsa macchina virtuale, vedere Virtual machines in an Azure Resource Manager template (Macchine virtuali in un modello di Azure Resource Manager).For a detailed description of the virtual machine resource, see Virtual machines in an Azure Resource Manager template. Per altre informazioni su tutte le risorse in un modello, vedere Azure Resource Manager template walkthrough (Procedura dettagliata sui modelli di Azure Resource Manager).For more information about all the resources in a template, see Azure Resource Manager template walkthrough.

L'esecuzione della procedura illustrata in questo articolo richiede circa cinque minuti.It should take about five minutes to do the steps in this article.

Installare Azure PowerShellInstall Azure PowerShell

Per informazioni su come installare la versione più recente di Azure PowerShell, selezionare la sottoscrizione e accedere all'account, vedere Come installare e configurare Azure PowerShell.See How to install and configure Azure PowerShell for information about installing the latest version of Azure PowerShell, selecting your subscription, and signing in to your account.

Creare un gruppo di risorseCreate a resource group

Tutte le risorse devono essere distribuite in un gruppo di risorse.All resources must be deployed in a resource group.

  1. Ottenere un elenco di località disponibili in cui possono essere create le risorse.Get a list of available locations where resources can be created.

    Get-AzureRmLocation | sort DisplayName | Select DisplayName
    
  2. Creare il gruppo di risorse nella località selezionata.Create the resource group in the location that you select. Questo esempio descrive la creazione di un gruppo di risorse denominato myResourceGroup nella località Stati Uniti occidentali:This example shows the creation of a resource group named myResourceGroup in the West US location:

    New-AzureRmResourceGroup -Name "myResourceGroup" -Location "West US"
    

Creare i fileCreate the files

In questo passaggio si crea un file di modello che consente di distribuire le risorse e un file di parametri che fornisce i valori dei parametri nel modello.In this step, you create a template file that deploys the resources and a parameters file that supplies parameter values to the template. È possibile anche creare un file di autorizzazione da usare per eseguire operazioni in Azure Resource Manager.You also create an authorization file that is used to perform Azure Resource Manager operations.

  1. Creare un file denominato CreateVMTemplate.json e aggiungervi questo codice JSON:Create a file named CreateVMTemplate.json and add this JSON code to it:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "adminUsername": { "type": "string" },
        "adminPassword": { "type": "securestring" }
      },
      "variables": {
        "vnetID": "[resourceId('Microsoft.Network/virtualNetworks','myVNet')]", 
        "subnetRef": "[concat(variables('vnetID'),'/subnets/mySubnet')]", 
      },
      "resources": [
        {
          "apiVersion": "2016-03-30",
          "type": "Microsoft.Network/publicIPAddresses",
          "name": "myPublicIPAddress",
          "location": "[resourceGroup().location]",
          "properties": {
            "publicIPAllocationMethod": "Dynamic",
            "dnsSettings": {
              "domainNameLabel": "myresourcegroupdns1"
            }
          }
        },
        {
          "apiVersion": "2016-03-30",
          "type": "Microsoft.Network/virtualNetworks",
          "name": "myVNet",
          "location": "[resourceGroup().location]",
          "properties": {
            "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] },
            "subnets": [
              {
                "name": "mySubnet",
                "properties": { "addressPrefix": "10.0.0.0/24" }
              }
            ]
          }
        },
        {
          "apiVersion": "2016-03-30",
          "type": "Microsoft.Network/networkInterfaces",
          "name": "myNic",
          "location": "[resourceGroup().location]",
          "dependsOn": [
            "[resourceId('Microsoft.Network/publicIPAddresses/', 'myPublicIPAddress')]",
            "[resourceId('Microsoft.Network/virtualNetworks/', 'myVNet')]"
          ],
          "properties": {
            "ipConfigurations": [
              {
                "name": "ipconfig1",
                "properties": {
                  "privateIPAllocationMethod": "Dynamic",
                  "publicIPAddress": { "id": "[resourceId('Microsoft.Network/publicIPAddresses','myPublicIPAddress')]" },
                  "subnet": { "id": "[variables('subnetRef')]" }
                }
              }
            ]
          }
        },
        {
          "apiVersion": "2016-04-30-preview",
          "type": "Microsoft.Compute/virtualMachines",
          "name": "myVM",
          "location": "[resourceGroup().location]",
          "dependsOn": [
            "[resourceId('Microsoft.Network/networkInterfaces/', 'myNic')]"
          ],
          "properties": {
            "hardwareProfile": { "vmSize": "Standard_DS1" },
            "osProfile": {
              "computerName": "myVM",
              "adminUsername": "[parameters('adminUsername')]",
              "adminPassword": "[parameters('adminPassword')]"
            },
            "storageProfile": {
              "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "2012-R2-Datacenter",
                "version": "latest"
              },
              "osDisk": {
                "name": "myManagedOSDisk",
                "caching": "ReadWrite",
                "createOption": "FromImage"
              }
            },
            "networkProfile": {
              "networkInterfaces": [
                {
                  "id": "[resourceId('Microsoft.Network/networkInterfaces','myNic')]"
                }
              ]
            }
          }
        }
      ]
    }
    
  2. Creare un file denominato Parameters.json e aggiungervi questo codice JSON:Create a file named Parameters.json and add this JSON code to it:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
      "contentVersion": "1.0.0.0",
      "parameters": {
      "adminUserName": { "value": "azureuser" },
        "adminPassword": { "value": "Azure12345678" }
      }
    }
    
  3. Creare un nuovo account di archiviazione e un nuovo contenitore:Create a new storage account and container:

    $storageName = "st" + (Get-Random)
    New-AzureRmStorageAccount -ResourceGroupName "myResourceGroup" -AccountName $storageName -Location "West US" -SkuName "Standard_LRS" -Kind Storage
    $accountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName myResourceGroup -Name $storageName).Value[0]
    $context = New-AzureStorageContext -StorageAccountName $storageName -StorageAccountKey $accountKey 
    New-AzureStorageContainer -Name "templates" -Context $context -Permission Container
    
  4. Caricare i file nell'account di archiviazione:Upload the files to the storage account:

    Set-AzureStorageBlobContent -File "C:\templates\CreateVMTemplate.json" -Context $context -Container "templates"
    Set-AzureStorageBlobContent -File "C:\templates\Parameters.json" -Context $context -Container templates
    

    Cambiare i percorsi -File nella posizione in cui sono stati archiviati i file.Change the -File paths to the location where you stored the files.

Creare le risorseCreate the resources

Distribuire il modello usando i parametri:Deploy the template using the parameters:

$templatePath = "https://" + $storageName + ".blob.core.windows.net/templates/CreateVMTemplate.json"
$parametersPath = "https://" + $storageName + ".blob.core.windows.net/templates/Parameters.json"
New-AzureRmResourceGroupDeployment -ResourceGroupName "myResourceGroup" -Name "myDeployment" -TemplateUri $templatePath -TemplateParameterUri $parametersPath 

Nota

È inoltre possibile distribuire modelli e parametri da file locali.You can also deploy templates and parameters from local files. Per altre informazioni, vedere Uso di Azure PowerShell con Archiviazione di Azure.To learn more, see Using Azure PowerShell with Azure Storage.

Passaggi successiviNext Steps