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.

Avviare Azure Cloud ShellLaunch Azure Cloud Shell

Azure Cloud Shell è una shell interattiva gratuita che può essere usata per eseguire la procedura di questo articolo.The Azure Cloud Shell is a free interactive shell that you can use to run the steps in this article. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account.It has common Azure tools preinstalled and configured to use with your account. È sufficiente fare clic su Copia per copiare il codice, incollarlo in Cloud Shell e quindi premere INVIO per eseguirlo.Just click the Copy to copy the code, paste it into the Cloud Shell, and then press enter to run it. Esistono alcuni modi per avviare Cloud Shell:There are a few ways to launch the Cloud Shell:

Fare clic su Prova nell'angolo superiore destro di un blocco di codice.Click Try It in the upper right corner of a code block. Cloud Shell in questo articolo
Aprire Cloud Shell nel browser.Open Cloud Shell in your browser. https://shell.azure.com/powershell
Fare clic sul pulsante Cloud Shell nel menu in alto a destra nel portale di Azure.Click the Cloud Shell button on the menu in the upper right of the Azure portal. Cloud Shell nel portaleCloud Shell in the portal

Se si sceglie di installare e usare PowerShell in locale, per questa esercitazione è necessario il modulo Azure PowerShell versione 5.3 o successiva.If you choose to install and use the PowerShell locally, this tutorial requires the Azure PowerShell module version 5.3 or later. Eseguire Get-Module -ListAvailable AzureRM per trovare la versione.Run Get-Module -ListAvailable AzureRM to find the version. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.If you need to upgrade, see Install Azure PowerShell module. Se si esegue PowerShell in locale, è anche necessario eseguire Connect-AzureRmAccount per creare una connessione con Azure.If you are running PowerShell locally, you also need to run Connect-AzureRmAccount to create a connection with Azure.

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