Estensioni e funzionalità della macchina virtuale per WindowsVirtual machine extensions and features for Windows

Le estensioni della macchina virtuale di Azure sono piccole applicazioni che eseguono attività di configurazione e automazione post-distribuzione sulle macchine virtuali di Azure.Azure virtual machine extensions are small applications that provide post-deployment configuration and automation tasks on Azure virtual machines. Ad esempio, se una macchina virtuale richiede l'installazione di software, la protezione antivirus o la configurazione di Docker, è possibile usare un'estensione di macchina virtuale per completare queste attività.For example, if a virtual machine requires software installation, anti-virus protection, or Docker configuration, a VM extension can be used to complete these tasks. Le estensioni della macchina virtuale di Azure possono essere eseguite tramite l'interfaccia della riga di comando di Azure, PowerShell, i modelli di Azure Resource Manager e il portale di Azure.Azure VM extensions can be run by using the Azure CLI, PowerShell, Azure Resource Manager templates, and the Azure portal. Le estensioni possono essere unite in bundle con una nuova distribuzione di macchina virtuale o eseguite su un sistema esistente.Extensions can be bundled with a new virtual machine deployment or run against any existing system.

Questo documento fornisce una panoramica delle estensioni macchina virtuale, i prerequisiti per l'uso delle estensioni macchina virtuale e le indicazioni su come rilevare, gestire e rimuovere le estensioni macchina virtuale.This document provides an overview of virtual machine extensions, prerequisites for using virtual machine extensions, and guidance on how to detect, manage, and remove virtual machine extensions. Questo documento fornisce informazioni generali perché sono disponibili molte estensioni della macchina virtuale, ognuna con una configurazione potenzialmente univoca.This document provides generalized information because many VM extensions are available, each with a potentially unique configuration. I dettagli sono disponibili nel documento specifico della singola estensione.Extension-specific details can be found in each document specific to the individual extension.

Casi d'uso ed esempiUse cases and samples

Sono disponibili numerose estensioni della macchina virtuale di Azure, ognuna con un caso d'uso specifico.There are many different Azure VM extensions available, each with a specific use case. Alcuni esempi di casi d'uso sono:Some example use cases are:

Oltre alle estensioni specifiche del processo, è disponibile un'estensione Script personalizzato per le macchine virtuali Linux e Windows.In addition to process-specific extensions, a Custom Script extension is available for both Windows and Linux virtual machines. L'estensione Script personalizzato per Windows consente l'esecuzione di qualsiasi script PowerShell su una macchina virtuale.The Custom Script extension for Windows allows any PowerShell script to be run on a virtual machine. È utile per la progettazione di distribuzioni di Azure che richiedono una configurazione oltre a quella offerta dagli strumenti nativi di Azure.This is useful when you're designing Azure deployments that require configuration beyond what native Azure tooling can provide. Per altre informazioni, vedere Estensione Script personalizzato per macchine virtuali Windows.For more information, see Windows VM Custom Script extension.

PrerequisitiPrerequisites

Ogni estensione macchina virtuale può avere un insieme specifico di prerequisiti.Each virtual machine extension may have its own set of prerequisites. Ad esempio, un prerequisito dell'estensione della macchina virtuale Docker è una distribuzione Linux supportata.For instance, the Docker VM extension has a prerequisite of a supported Linux distribution. La documentazione specifica dell'estensione illustra in dettaglio i requisiti delle singole estensioni.Requirements of individual extensions are detailed in the extension-specific documentation.

Agente di macchine virtuali di AzureAzure VM agent

L'agente di macchine virtuali di Azure gestisce l'interazione tra una macchina virtuale di Azure e il controller di infrastruttura di Azure.The Azure VM agent manages interaction between an Azure virtual machine and the Azure fabric controller. L'agente di macchine virtuali è responsabile di molti aspetti funzionali della distribuzione e della gestione delle macchine virtuali di Azure, tra cui l'esecuzione delle estensioni delle macchine virtuali.The VM agent is responsible for many functional aspects of deploying and managing Azure virtual machines, including running VM extensions. L'agente di macchine virtuali di Azure è preinstallato nelle immagini di Azure Marketplace e può essere installato nei sistemi operativi supportati.The Azure VM agent is preinstalled on Azure Marketplace images and can be installed on supported operating systems.

Per informazioni sui sistemi operativi supportati e per le istruzioni di installazione, vedere Agente delle macchine virtuali di Azure.For information on supported operating systems and installation instructions, see Azure virtual machine agent.

Individuare le estensioni della macchina virtualeDiscover VM extensions

Molte estensioni delle macchine virtuali di diverso tipo sono disponibili per l'uso con macchine virtuali di Azure.Many different VM extensions are available for use with Azure virtual machines. Per visualizzare un elenco completo, eseguire il comando seguente con il modulo Azure Resource Manager di PowerShell.To see a complete list, run the following command with the Azure Resource Manager PowerShell module. Assicurarsi di specificare il percorso desiderato quando si esegue questo comando.Make sure to specify the desired location when you're running this command.

Get-AzureRmVmImagePublisher -Location WestUS | `
Get-AzureRmVMExtensionImageType | `
Get-AzureRmVMExtensionImage | Select Type, Version

Eseguire le estensioni della macchina virtualeRun VM extensions

Le estensioni della macchina virtuale di Azure possono essere eseguite nelle macchine virtuali esistenti e sono utili quando è necessario apportare modifiche alla configurazione o ripristinare la connettività in una VM già distribuita.Azure virtual machine extensions can be run on existing virtual machines, which is useful when you need to make configuration changes or recover connectivity on an already deployed VM. Le estensioni della macchina virtuale possono essere anche unite in bundle con le distribuzioni del modello di Azure Resource Manager.VM extensions can also be bundled with Azure Resource Manager template deployments. L'uso delle estensioni con i modelli di Resource Manager consente di distribuire e configurare le macchine virtuali di Azure senza che sia necessario l'intervento post-distribuzione.By using extensions with Resource Manager templates, you can enable Azure virtual machines to be deployed and configured without the need for post-deployment intervention.

Per eseguire un'estensione in una macchina virtuale esistente, è possibile usare i metodi seguenti.The following methods can be used to run an extension against an existing virtual machine.

PowerShellPowerShell

Molti comandi di PowerShell vengono utilizzati per l'esecuzione di estensioni singole.Several PowerShell commands exist for running individual extensions. Per visualizzare un elenco, eseguire i seguenti comandi PowerShell.To see a list, run the following PowerShell commands.

get-command Set-AzureRM*Extension* -Module AzureRM.Compute

L'output generato sarà simile al seguente:This provides output similar to the following:

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Set-AzureRmVMAccessExtension                       2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMADDomainExtension                     2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMAEMExtension                          2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMBackupExtension                       2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMBginfoExtension                       2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMChefExtension                         2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMCustomScriptExtension                 2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMDiagnosticsExtension                  2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMDiskEncryptionExtension               2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMDscExtension                          2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMExtension                             2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMSqlServerExtension                    2.2.0      AzureRM.Compute

Nell'esempio seguente si utilizza l'estensione Script personalizzato per scaricare uno script da un archivio GitHub nella macchina virtuale di destinazione e quindi eseguire lo script.The following example uses the Custom Script extension to download a script from a GitHub repository onto the target virtual machine and then run the script. Per altre informazioni sull'estensione Script personalizzato, vedere Custom Script extension overview (Panoramica delle estensioni dello script personalizzato).For more information on the Custom Script extension, see Custom Script extension overview.

Set-AzureRmVMCustomScriptExtension -ResourceGroupName "myResourceGroup" `
    -VMName "myVM" -Name "myCustomScript" `
    -FileUri "https://raw.githubusercontent.com/neilpeterson/nepeters-azure-templates/master/windows-custom-script-simple/support-scripts/Create-File.ps1" `
    -Run "Create-File.ps1" -Location "West US"

In questo esempio, l'estensione Accesso alla macchina virtuale viene usata per reimpostare la password amministrativa di una macchina virtuale Windows.In this example, the VM Access extension is used to reset the administrative password of a Windows virtual machine. Per altre informazioni sull'estensione Accesso alla macchina virtuale, vedere Reset Remote Desktop service in a Windows VM (Reimpostare il servizio Desktop Remoto in una macchina virtuale Windows).For more information on the VM Access extension, see Reset Remote Desktop service in a Windows VM.

$cred=Get-Credential

Set-AzureRmVMAccessExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myVMAccess" `
    -Location WestUS -UserName $cred.GetNetworkCredential().Username `
    -Password $cred.GetNetworkCredential().Password -typeHandlerVersion "2.0"

Il comando Set-AzureRmVMExtension può essere utilizzato per avviare qualsiasi estensione della macchina virtuale.The Set-AzureRmVMExtension command can be used to start any VM extension. Per altre informazioni, vedere il riferimento Set-AzureRmVMExtension.For more information, see the Set-AzureRmVMExtension reference.

Portale di AzureAzure portal

Un'estensione macchina virtuale può essere applicata a una macchina virtuale esistente tramite il portale di Azure.A VM extension can be applied to an existing virtual machine through the Azure portal. A tale scopo, selezionare la macchina virtuale che si desidera utilizzare, scegliere Estensioni e fare clic su Aggiungi.To do so, select the virtual machine you want to use, choose Extensions, and click Add. In questo modo si ottiene un elenco di estensioni disponibili.This provides a list of available extensions. Selezionare quella desiderata, quindi seguire le istruzioni nella procedura guidata.Select the one you want and follow the steps in the wizard.

L'immagine seguente illustra l'installazione dell'estensione Microsoft Antimalware dal portale di Azure.The following image shows the installation of the Microsoft Antimalware extension from the Azure portal.

Installare un'estensione antimalware

Modelli di Gestione risorse di AzureAzure Resource Manager templates

Le estensioni macchina virtuale possono essere aggiunte a un modello di Azure Resource Manager ed eseguite con la distribuzione del modello.VM extensions can be added to an Azure Resource Manager template and executed with the deployment of the template. La distribuzione di estensioni con un modello è utile per la creazione di distribuzioni di Azure completamente configurate.Deploying extensions with a template is useful for creating fully configured Azure deployments. Ad esempio, il codice JSON seguente viene eseguito da un modello di Resource Manager che consente di distribuire un set di macchine virtuali con carico bilanciato e un database SQL di Azure, quindi installa un'applicazione .NET Core in ogni macchina virtuale.For example, the following JSON is taken from a Resource Manager template that deploys a set of load-balanced virtual machines and an Azure SQL database, and then installs a .NET Core application on each VM. L'estensione della macchina virtuale gestisce l'installazione del software.The VM extension takes care of the software installation.

Per altre informazioni, vedere il modello di Resource Manager completo.For more information, see the full Resource Manager template.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.4",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

Per altre informazioni, vedere Authoring Azure Resource Manager templates with Windows VM extensions (Creazione di modelli di Azure Resource Manager con le estensioni della macchina virtuale Windows).For more information, see Authoring Azure Resource Manager templates with Windows VM extensions.

Proteggere i dati dell'estensione della macchina virtualeSecure VM extension data

Quando si esegue un'estensione macchina virtuale, potrebbe essere necessario includere informazioni riservate, ad esempio le credenziali, i nomi degli account di archiviazione e le chiavi di accesso dell'account di archiviazione.When you're running a VM extension, it may be necessary to include sensitive information such as credentials, storage account names, and storage account access keys. Molte estensioni della macchina virtuale includono una configurazione protetta, che consente di crittografare dati e di decrittografarli solo all'interno della macchina virtuale di destinazione.Many VM extensions include a protected configuration that encrypts data and only decrypts it inside the target virtual machine. Ogni estensione ha uno schema di configurazione protetto specifico che sarà descritto in maniera dettagliata nella documentazione specifica dell'estensione.Each extension has a specific protected configuration schema that will be detailed in extension-specific documentation.

L'esempio seguente illustra un'istanza dell'estensione Script personalizzato per Windows.The following example shows an instance of the Custom Script extension for Windows. Si noti che il comando da eseguire include un insieme di credenziali.Notice that the command to execute includes a set of credentials. In questo esempio, il comando da eseguire non verrà crittografato.In this example, the command to execute will not be encrypted.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.4",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ],
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

Proteggere la stringa di esecuzione spostando la proprietà comando da eseguire nella configurazione protetta.Secure the execution string by moving the command to execute property to the protected configuration.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.4",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

Risoluzione dei problemi relativi alle estensioni della macchina virtualeTroubleshoot VM extensions

Ogni estensione macchina virtuale può disporre di passaggi per la risoluzione dei problemi specifici.Each VM extension may have specific troubleshooting steps. Ad esempio, quando si usa l'estensione script personalizzato, i dettagli sull'esecuzione dello script sono reperibili in locale nella macchina virtuale in cui è stata eseguita l'estensione.For instance, when you're using the Custom Script extension, script execution details can be found locally on the virtual machine on which the extension was run. Tutti i passaggi per la risoluzione dei problemi specifici dell'estensione sono descritti in dettaglio nella documentazione specifica dell'estensione.Any extension-specific troubleshooting steps are detailed in extension-specific documentation.

I passaggi per la risoluzione dei problemi seguenti si applicano a tutte le estensioni macchina virtuale.The following troubleshooting steps apply to all virtual machine extensions.

Visualizzare lo stato dell'estensioneView extension status

Dopo l'esecuzione dell'estensione di una macchina virtuale, usare il comando seguente di PowerShell per restituire lo stato dell'estensione.After a virtual machine extension has been run against a virtual machine, use the following PowerShell command to return extension status. Sostituire i nomi dei parametri di esempio con i valori desiderati.Replace example parameter names with your own values. Il parametro Name accetta il nome specificato per l'estensione durante l'esecuzione.The Name parameter takes the name given to the extension at execution time.

Get-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName myVM -Name myExtensionName

L'output è simile al seguente:The output looks like the following:

ResourceGroupName       : myResourceGroup
VMName                  : myVM
Name                    : myExtensionName
Location                : westus
Etag                    : null
Publisher               : Microsoft.Azure.Extensions
ExtensionType           : DockerExtension
TypeHandlerVersion      : 1.0
Id                      : /subscriptions/mySubscriptionIS/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/extensions/myExtensionName
PublicSettings          :
ProtectedSettings       :
ProvisioningState       : Succeeded
Statuses                :
SubStatuses             :
AutoUpgradeMinorVersion : False
ForceUpdateTag          :

Lo stato di esecuzione dell'estensione è disponibile anche nel portale di Azure.Extension execution status can also be found in the Azure portal. Per visualizzare lo stato di un'estensione, selezionare la macchina virtuale, scegliere Estensioni e selezionare l'estensione desiderata.To view the status of an extension, select the virtual machine, choose Extensions, and select the desired extension.

Eseguire nuovamente le estensioni della macchina virtualeRerun VM extensions

In alcuni casi potrebbe essere necessario rieseguire un'estensione della macchina virtuale.There may be cases in which a virtual machine extension needs to be rerun. È possibile farlo rimuovendo l'estensione e quindi eseguendo di nuovo l'estensione con il metodo di esecuzione scelto.You can do this by removing the extension and then rerunning the extension with an execution method of your choice. Per rimuovere un'estensione, eseguire il comando seguente con il modulo Azure PowerShell.To remove an extension, run the following command with the Azure PowerShell module. Sostituire i nomi dei parametri di esempio con i valori desiderati.Replace example parameter names with your own values.

Remove-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName myVM -Name myExtensionName

Un'estensione può essere eliminata anche tramite il portale di Azure.An extension can also be removed using the Azure portal. A tale scopo, procedere come segue:To do so:

  1. Selezionare una macchina virtuale.Select a virtual machine.
  2. Selezionare Estensioni.Select Extensions.
  3. Selezionare l'estensione desiderata.Choose the desired extension.
  4. Selezionare Disinstalla.Select Uninstall.

Riferimento alle estensioni della macchina virtuale comuniCommon VM extensions reference

Nome estensioneExtension name DescrizioneDescription Altre informazioniMore information
Estensione Script personalizzato per WindowsCustom Script Extension for Windows Eseguire script su una macchina virtuale di Azure.Run scripts against an Azure virtual machine Estensione script personalizzata per WindowsCustom Script Extension for Windows
Estensione DSC per WindowsDSC Extension for Windows Estensione PowerShell DSC (Desired State Configuration)PowerShell DSC (Desired State Configuration) Extension Estensione DSC per WindowsDSC Extension for Windows
Estensione di Diagnostica di AzureAzure Diagnostics Extension Gestisce Diagnostica di Azure.Manage Azure Diagnostics Estensione di Diagnostica di AzureAzure Diagnostics Extension
Estensione dell'accesso alla VM di AzureAzure VM Access Extension Gestire gli utenti e le credenzialiManage users and credentials Estensione dell'accesso alle macchine virtuali per LinuxVM Access Extension for Linux