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

Le estensioni macchina virtuale di Azure sono piccole applicazioni che eseguono attività di configurazione e automazione post-distribuzione nelle macchine virtuali di Azure.Azure virtual machine (VM) extensions are small applications that provide post-deployment configuration and automation tasks on Azure VMs. Ad esempio, se una macchina virtuale richiede l'installazione di software, la protezione antivirus o l'esecuzione di uno script al suo interno, è possibile usare un'estensione macchina virtuale.For example, if a virtual machine requires software installation, anti-virus protection, or to run a script inside of it, a VM extension can be used. Le estensioni 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 with the Azure CLI, PowerShell, Azure Resource Manager templates, and the Azure portal. Le estensioni possono essere aggregate con una nuova distribuzione di macchina virtuale o eseguite su un sistema esistente.Extensions can be bundled with a new VM deployment, or run against any existing system.

Questo articolo offre una panoramica delle estensioni macchina virtuale, i prerequisiti per l'uso di queste estensioni di Azure e le indicazioni su come rilevare, gestire e rimuovere le estensioni.This article provides an overview of VM extensions, prerequisites for using Azure VM extensions, and guidance on how to detect, manage, and remove VM extensions. Questo articolo offre informazioni generali perché sono disponibili molte estensioni macchina virtuale, ognuna con una configurazione potenzialmente univoca.This article 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 uno specifico caso d'uso.Several different Azure VM extensions are available, each with a specific use case. Di seguito sono riportati alcuni esempi:Some examples include:

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 in una macchina virtuale.The Custom Script extension for Windows allows any PowerShell script to be run on a VM. Gli script personalizzati sono utili per la progettazione di distribuzioni di Azure che richiedono una configurazione in aggiunta a quella offerta dagli strumenti nativi di Azure.Custom scripts are useful for 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

Per gestire l'estensione nella macchina virtuale, è necessario aver installato l'agente Windows di Azure.To handle the extension on the VM, you need the Azure Windows Agent installed. Alcune estensioni individuali hanno prerequisiti, ad esempio l'accesso alle risorse o alle dipendenze.Some individual extensions have prerequisites, such as access to resources or dependencies.

Agente VM di AzureAzure VM agent

L'agente di macchine virtuali di Azure gestisce le interazioni tra una macchina virtuale di Azure e il controller di infrastruttura di Azure.The Azure VM agent manages interactions between an Azure VM 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 macchina virtuale.The VM agent is responsible for many functional aspects of deploying and managing Azure VMs, including running VM extensions. L'agente di macchine virtuali di Azure è preinstallato nelle immagini di Azure Marketplace e può essere installato manualmente nei sistemi operativi supportati.The Azure VM agent is preinstalled on Azure Marketplace images, and can be installed manually on supported operating systems. L'agente di macchine virtuali di Azure per Windows è noto come agente guest di Windows.The Azure VM Agent for Windows is known as the Windows Guest agent.

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.

Versioni supportate dell'agenteSupported agent versions

Per garantire la migliore esperienza possibile, sono previsti requisiti minimi per le versioni supportate dell'agente.In order to provide the best possible experience, there are minimum versions of the agent. Per altre informazioni, vedere questo articolo.For more information, see this article.

Sistemi operativi supportatiSupported OSes

L'agente guest di Windows viene eseguito su più sistemi operativi, tuttavia il framework delle estensioni prevede un limite per i sistemi operativi.The Windows Guest agent runs on multiple OSes, however the extensions framework has a limit for the OSes that extensions. Per altre informazioni, vedere questo articolo.For more information, see this article.

Alcune estensioni non sono supportate in tutti i sistemi operativi e possono generare il codice di errore 51, "Sistema operativo non supportato".Some extensions are not supported across all OSes and may emit Error Code 51, 'Unsupported OS'. Vedere la documentazione della singola estensione per informazioni sul supporto.Check the individual extension documentation for supportability.

Accesso alla reteNetwork access

I pacchetti di estensioni vengono scaricati dal repository delle estensioni di Archiviazione di Azure, mentre i caricamenti dello stato delle estensioni vengono pubblicati in Archiviazione di Azure.Extension packages are downloaded from the Azure Storage extension repository, and extension status uploads are posted to Azure Storage. Se si usa una versione supportata degli agenti, non è necessario consentire l'accesso ad Archiviazione di Azure nell'area della macchina virtuale, perché è possibile usare l'agente per reindirizzare la comunicazione al controller di infrastruttura di Azure.If you use supported version of the agents, you do not need to allow access to Azure Storage in the VM region, as can use the agent to redirect the communication to the Azure fabric controller for agent communications. Se è in uso una versione non supportata dell'agente, è necessario consentire l'accesso in uscita ad Archiviazione di Azure in tale area dalla macchina virtuale.If you are on a non-supported version of the agent, you need to allow outbound access to Azure storage in that region from the VM.

Importante

Se l'accesso a 168.63.129.16 è stato bloccato con il firewall guest, le estensioni non rispettano quanto specificato sopra.If you have blocked access to 168.63.129.16 using the guest firewall, then extensions fail irrespective of the above.

Gli agenti possono essere usati solo per caricare i pacchetti di estensioni e lo stato della creazione di report.Agents can only be used to download extension packages and reporting status. Ad esempio, se l'installazione di un'estensione richiede il download di uno script da GitHub (script personalizzato) o ha bisogno di accedere ad Archiviazione di Azure (Backup di Azure), allora è necessario aprire altre porte del firewall/gruppo di sicurezza di rete.For example, if an extension install needs to download a script from GitHub (Custom Script) or needs access to Azure Storage (Azure Backup), then additional firewall/Network Security Group ports need to be opened. Estensioni diverse hanno requisiti diversi, perché sono applicazioni indipendenti.Different extensions have different requirements, since they are applications in their own right. È possibile consentire l'accesso ad Archiviazione di Azure per le estensioni usando i tag di servizio del NSG per Archiviazione.For extensions that require access to Azure Storage, you can allow access using Azure NSG Service Tags for Storage.

L'agente guest di Windows non dispone del supporto del server proxy per il reindirizzamento delle richieste al traffico dell'agente.The Windows Guest Agent does not have proxy server support for you to redirect agent traffic requests through.

Individuare le estensioni della macchina virtualeDiscover VM extensions

Sono disponibili molte estensioni diverse delle macchine virtuali da usare con macchine virtuali di Azure.Many different VM extensions are available for use with Azure VMs. Per visualizzare un elenco completo usare Get-AzVMExtensionImage.To see a complete list, use Get-AzVMExtensionImage. L'esempio seguente elenca tutte le estensioni disponibili nella posizione WestUS:The following example lists all available extensions in the WestUS location:

Get-AzVmImagePublisher -Location "WestUS" | `
Get-AzVMExtensionImageType | `
Get-AzVMExtensionImage | Select Type, Version

Eseguire le estensioni della macchina virtualeRun VM extensions

Le estensioni macchina virtuale di Azure vengono eseguite nelle macchine virtuali esistenti e questo è utile quando è necessario apportare modifiche alla configurazione o ripristinare la connettività in una macchina virtuale già distribuita.Azure VM extensions run on existing VMs, 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 l'intervento post-distribuzione.By using extensions with Resource Manager templates, Azure VMs can be deployed and configured without 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 VM.

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, usare Get-Command e applicare il filtro Estensione:To see a list, use Get-Command and filter on Extension:

Get-Command Set-Az*Extension* -Module AzureRM.Compute

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

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Set-AzVMAccessExtension                       4.5.0      AzureRM.Compute
Cmdlet          Set-AzVMADDomainExtension                     4.5.0      AzureRM.Compute
Cmdlet          Set-AzVMAEMExtension                          4.5.0      AzureRM.Compute
Cmdlet          Set-AzVMBackupExtension                       4.5.0      AzureRM.Compute
Cmdlet          Set-AzVMBginfoExtension                       4.5.0      AzureRM.Compute
Cmdlet          Set-AzVMChefExtension                         4.5.0      AzureRM.Compute
Cmdlet          Set-AzVMCustomScriptExtension                 4.5.0      AzureRM.Compute
Cmdlet          Set-AzVMDiagnosticsExtension                  4.5.0      AzureRM.Compute
Cmdlet          Set-AzVMDiskEncryptionExtension               4.5.0      AzureRM.Compute
Cmdlet          Set-AzVMDscExtension                          4.5.0      AzureRM.Compute
Cmdlet          Set-AzVMExtension                             4.5.0      AzureRM.Compute
Cmdlet          Set-AzVMSqlServerExtension                    4.5.0      AzureRM.Compute
Cmdlet          Set-AzVmssDiskEncryptionExtension             4.5.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-AzVMCustomScriptExtension -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"

Nell'esempio seguente l'estensione Accesso alla macchina virtuale viene usata per reimpostare la password amministrativa di una macchina virtuale Windows definendo una password temporanea.In the following example, the VM Access extension is used to reset the administrative password of a Windows VM to a temporary password. 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. Dopo l'esecuzione, è consigliabile reimpostare la password al primo accesso:Once you have run this, you should reset the password at first login:

$cred=Get-Credential

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

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

Portale di AzureAzure portal

Le estensioni macchina virtuale possono essere applicate a una macchina virtuale esistente tramite il portale di Azure.VM extensions can be applied to an existing VM through the Azure portal. Selezionare la macchina virtuale nel portale, scegliere Estensioni, quindi selezionare Aggiungi.Select the VM in the portal, choose Extensions, then select Add. Scegliere l'estensione desiderata dall'elenco di quelle disponibili e quindi seguire le istruzioni della procedura guidata.Choose the extension you want from the list of available extensions and follow the instructions in the wizard.

L'esempio seguente illustra l'installazione dell'estensione Microsoft Antimalware dal portale di Azure:The following example 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 della 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. Quando si distribuisce un'estensione con un modello, è possibile creare distribuzioni di Azure completamente configurate.When you deploy an extension with a template, you can create fully configured Azure deployments. Ad esempio, il codice JSON seguente proviene da un modello di Resource Manager che consente di distribuire un set di macchine virtuali con bilanciamento del carico 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 deploys a set of load-balanced VMs and an Azure SQL database, 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.9",
    "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 sulla creazione di modelli di Resource Manager, vedere Creare modelli di Azure Resource Manager con estensioni macchina virtuale Windows.For more information on creating Resource Manager templates, 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 credenziali, nomi degli account di archiviazione e chiavi di accesso degli account di archiviazione.When you run a VM extension, it may be necessary to include sensitive information such as credentials, storage account names, and storage account access keys. Molte estensioni 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 VM. Ogni estensione dispone di uno schema di configurazione protetta specifico, descritto in dettaglio nella documentazione specifica dell'estensione.Each extension has a specific protected configuration schema, and each is 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. Il comando da eseguire include un set di credenziali.The command to execute includes a set of credentials. In questo esempio il comando da eseguire non è crittografato:In this example, the command to execute is not 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.9",
    "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')]"
    }
    }
}

Lo spostamento della proprietà del comando da eseguire nella configurazione protetta consente di proteggere la stringa di esecuzione, come mostrato nell'esempio seguente:Moving the command to execute property to the protected configuration secures the execution string, as shown in the following example:

{
    "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.9",
    "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')]"
    }
    }
}

Aggiornamento di agenti ed estensioniHow do agents and extensions get updated?

Agenti ed estensioni condividono il meccanismo di aggiornamento.The Agents and Extensions share the same update mechanism. Alcuni aggiornamenti non richiedono regole del firewall aggiuntive.Some updates do not require additional firewall rules.

Quando è disponibile un aggiornamento, viene installato nella macchina virtuale solo se sono presenti una modifica alle estensioni e altre modifiche al modello di macchina virtuale, ad esempio:When an update is available, it is only installed on the VM when there is a change to extensions, and other VM Model changes such as:

  • Dischi datiData disks
  • EstensioniExtensions
  • Contenitore della diagnostica di avvioBoot diagnostics container
  • Segreti del sistema operativo guestGuest OS secrets
  • Dimensioni macchina virtualeVM size
  • Profilo di reteNetwork profile

I server di pubblicazione rendono disponibili gli aggiornamenti nelle varie aree geografiche in momenti diversi, quindi è possibile che le macchine virtuali in aree diverse eseguano versioni diverse.Publishers make updates available to regions at different times, so it is possible you can have VMs in different regions on different versions.

Elencare le estensioni distribuite in una macchina virtualeListing Extensions Deployed to a VM

$vm = Get-AzVM -ResourceGroupName "myResourceGroup" -VMName "myVM"
$vm.Extensions | select Publisher, VirtualMachineExtensionType, TypeHandlerVersion
Publisher             VirtualMachineExtensionType          TypeHandlerVersion
---------             ---------------------------          ------------------
Microsoft.Compute     CustomScriptExtension                1.9

Aggiornamenti dell'agenteAgent updates

L'agente guest di Windows contiene solo il codice Extension Handling; il codice Windows Provisioning è separato.The Windows Guest Agent only contains Extension Handling code, the Windows Provisioning code is separate. È possibile disinstallare l'agente guest di Windows.You can uninstall the Windows Guest Agent. Non è possibile disabilitare l'aggiornamento automatico dell'agente guest di Windows.You cannot disable the automatic update of the Window Guest Agent.

Il codice Extension Handling è responsabile della comunicazione con l'infrastruttura di Azure e della gestione delle operazioni di estensione macchina virtuale, ad esempio installazioni, stato della creazione di report, aggiornamento e rimozione delle singole estensioni.The Extension Handling code is responsible for communicating with the Azure fabric, and handling the VM extensions operations such as installs, reporting status, updating the individual extensions, and removing them. Gli aggiornamenti contengono correzioni per la sicurezza, correzioni di bug e miglioramenti al codice Extension Handling.Updates contain security fixes, bug fixes, and enhancements to the Extension Handling code.

Per verificare la versione in esecuzione, vedere Detecting installed Windows Guest Agent (Rilevamento dell'agente guest di Windows installato).To check what version you are running, see Detecting installed Windows Guest Agent.

Aggiornamenti delle estensioniExtension updates

Quando è disponibile l'aggiornamento di un'estensione, l'agente guest di Windows lo scarica e lo installa.When an extension update is available, the Windows Guest Agent downloads and upgrades the extension. Gli aggiornamenti automatici delle estensioni sono secondari oppure aggiornamenti rapidi.Automatic extension updates are either Minor or Hotfix. È possibile accettare o rifiutare esplicitamente gli aggiornamenti secondari delle estensioni quando si effettua il provisioning dell'estensione.You can opt in or opt out of extensions Minor updates when you provision the extension. L'esempio seguente mostra come aggiornare automaticamente le versioni secondarie in un modello di Resource Manager con autoUpgradeMinorVersion": true,':The following example shows how to automatically upgrade minor versions in a Resource Manager template with autoUpgradeMinorVersion": true,':

    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },

Per ottenere le più recenti versioni secondarie delle correzioni di bug, si consiglia vivamente di selezionare sempre l'aggiornamento automatico nelle distribuzioni delle estensioni.To get the latest minor release bug fixes, it is highly recommended that you always select auto update in your extension deployments. Non è possibile rifiutare esplicitamente gli aggiornamenti rapidi che contengono correzioni di bug chiave o correzioni per la sicurezza.Hotfix updates that carry security or key bug fixes cannot be opted out.

Come identificare gli aggiornamenti delle estensioniHow to identify extension updates

Identificare se è impostato autoUpgradeMinorVersion per l'estensione in una macchina virtualeIdentifying if the extension is set with autoUpgradeMinorVersion on a VM

È possibile determinare dal modello di macchina virtuale se il provisioning dell'estensione è stato eseguito con 'autoUpgradeMinorVersion'.You can see from the VM model if the extension was provisioned with 'autoUpgradeMinorVersion'. Per controllare, usare Get-AzVm e specificare il nome del gruppo di risorse e della macchina virtuale come indicato di seguito:To check, use Get-AzVm and provide the resource group and VM name as follows:

 $vm = Get-AzVm -ResourceGroupName "myResourceGroup" -VMName "myVM"
 $vm.Extensions

L'output di esempio seguente mostra che autoUpgradeMinorVersion è impostato su true:The following example output shows that autoUpgradeMinorVersion is set to true:

ForceUpdateTag              :
Publisher                   : Microsoft.Compute
VirtualMachineExtensionType : CustomScriptExtension
TypeHandlerVersion          : 1.9
AutoUpgradeMinorVersion     : True

Identificare quando è stato eseguito autoUpgradeMinorVersionIdentifying when an autoUpgradeMinorVersion occurred

Per vedere quando è stato eseguito un aggiornamento dell'estensione, esaminare i log dell'agente nella macchina virtuale in C:\WindowsAzure\Logs\WaAppAgent.logTo see when an update to the extension occurred, review the agent logs on the VM at C:\WindowsAzure\Logs\WaAppAgent.log

Nell'esempio seguente nella macchina virtuale era installato Microsoft.Compute.CustomScriptExtension 1.8.In the following example, the VM had Microsoft.Compute.CustomScriptExtension 1.8 installed. Era disponibile un aggiornamento rapido alla versione 1.9:A hotfix was available to version 1.9:

[INFO]  Getting plugin locations for plugin 'Microsoft.Compute.CustomScriptExtension'. Current Version: '1.8', Requested Version: '1.9'
[INFO]  Auto-Upgrade mode. Highest public version for plugin 'Microsoft.Compute.CustomScriptExtension' with requested version: '1.9', is: '1.9'

Autorizzazioni dell'agenteAgent permissions

Per svolgere le attività, è necessario che l'agente venga eseguito come sistema locale.To perform its tasks, the agent needs to run as Local System.

Risoluzione dei problemi relativi alle estensioni della macchina virtualeTroubleshoot VM extensions

Ogni estensione macchina virtuale può richiedere passaggi per la risoluzione dei problemi specifici per l'estensione.Each VM extension may have troubleshooting steps specific to the extension. Ad esempio, quando si usa l'estensione di script personalizzato, i dettagli sull'esecuzione dello script sono disponibili in locale nella macchina virtuale in cui è stata eseguita l'estensione.For example, when you use the Custom Script extension, script execution details can be found locally on the VM where 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 seguenti per la risoluzione dei problemi sono validi per tutte le estensioni macchina virtuale.The following troubleshooting steps apply to all VM extensions.

  1. Per controllare il log dell'agente guest di Windows, esaminare l'attività di quando il provisioning dell'estensione è stato eseguito in C:\WindowsAzure\Logs\WaAppAgent.txtTo check the Windows Guest Agent Log, look at the activity when your extension was being provisioned in C:\WindowsAzure\Logs\WaAppAgent.txt

  2. Per altri dettagli, controllare i log effettivi dell'estensione in C:\WindowsAzure\Logs\Plugins<extensionName>Check the actual extension logs for more details in C:\WindowsAzure\Logs\Plugins<extensionName>

  3. Controllare le sezioni della documentazione sulla risoluzione dei problemi specifica per l'estensione relative a codici di errore, problemi noti e così via.Check extension specific documentation troubleshooting sections for error codes, known issues etc.

  4. Esaminare i registri di sistema.Look at the system logs. Controllare la presenza di altre operazioni che potrebbero aver interferito con l'estensione, ad esempio un'installazione a esecuzione prolungata di un'altra applicazione che ha richiesto l'accesso di gestione pacchetti esclusiva.Check for other operations that may have interfered with the extension, such as a long running installation of another application that required exclusive package manager access.

Motivi comuni che causano errori delle estensioniCommon reasons for extension failures

  1. Il limite di tempo per l'esecuzione delle estensioni è di 20 minuti. Fanno eccezione le estensioni Script personalizzato, Chef e DSC che hanno 90 minuti.Extensions have 20 mins to run (exceptions are the CustomScript extensions, Chef, and DSC that have 90 mins). Se la distribuzione supera questo tempo, viene contrassegnata come timeout.If your deployment exceeds this time, it is marked as a timeout. Il problema potrebbe essere causato da macchine virtuali con risorse insufficienti, altre configurazioni di macchine virtuali o attività di avvio che utilizzano grandi quantità di risorse mentre l'estensione sta tentando di effettuare il provisioning.The cause of this can be due to low resource VMs, other VM configurations/start up tasks consuming high amounts of resource whilst the extension is trying to provision.

  2. Prerequisiti minimi non soddisfatti.Minimum prerequisites not met. Alcune estensioni hanno dipendenze negli SKU di macchine virtuali, ad esempio le immagini HPC.Some extensions have dependencies on VM SKUs, such as HPC images. Le estensioni possono prevedere determinati requisiti di accesso alla rete, ad esempio la comunicazione con servizi pubblici o Archiviazione di Azure.Extensions may require certain networking access requirements, such as communicating to Azure Storage or public services. Altri esempi potrebbero essere l'accesso al repository di pacchetti, l'esaurimento dello spazio su disco o restrizioni di sicurezza.Other examples could be access to package repositories, running out of disk space, or security restrictions.

  3. Accesso esclusivo alla gestione pacchetti.Exclusive package manager access. In alcuni casi è possibile riscontrare un conflitto tra la configurazione della macchina virtuale a esecuzione prolungata e l'installazione dell'estensione, in cui entrambi gli elementi hanno bisogno di accesso esclusivo alla gestione pacchetti.In some cases, you may encounter a long running VM configuration and extension installation conflicting, where they both need exclusive access to the package manager.

Visualizzare lo stato dell'estensioneView extension status

Dopo l'esecuzione di un'estensione della macchina virtuale in una macchina virtuale, usare Get-AzVM per restituire lo stato dell'estensione.After a VM extension has been run against a VM, use Get-AzVM to return extension status. Substatuses[0] indica che il provisioning dell'estensione ha avuto esito positivo, vale a dire che l'estensione è stata distribuita alla macchina virtuale, ma l'esecuzione dell'estensione nella macchina virtuale ha avuto esito negativo (Substatuses[1]).Substatuses[0] shows that the extension provisioning succeeded, meaning that it successful deployed to the VM, but the execution of the extension inside the VM failed, Substatuses[1].

Get-AzVM -ResourceGroupName "myResourceGroup" -VMName "myVM" -Status

L'output è simile a quello dell'esempio seguente:The output is similar to the following example output:

Extensions[0]           :
  Name                  : CustomScriptExtension
  Type                  : Microsoft.Compute.CustomScriptExtension
  TypeHandlerVersion    : 1.9
  Substatuses[0]        :
    Code                : ComponentStatus/StdOut/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Message             : Windows PowerShell \nCopyright (C) Microsoft Corporation. All rights reserved.\n
  Substatuses[1]        :
    Code                : ComponentStatus/StdErr/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Message             : The argument 'cseTest%20Scriptparam1.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the

-File parameter.
  Statuses[0]           :
    Code                : ProvisioningState/failed/-196608
    Level               : Error
    DisplayStatus       : Provisioning failed
    Message             : Finished executing command

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 VM, choose Extensions, then select the desired extension.

Eseguire nuovamente le estensioni della macchina virtualeRerun VM extensions

In alcuni casi potrebbe essere necessario ripetere l'esecuzione della macchina virtuale.There may be cases in which a VM extension needs to be rerun. È possibile eseguire tale operazione rimuovendo l'estensione e quindi eseguendola di nuovo con il metodo scelto.You can rerun an extension by removing it, and then rerunning the extension with an execution method of your choice. Per rimuovere un'estensione, usare Remove-AzVMExtension come indicato di seguito:To remove an extension, use Remove-AzVMExtension as follows:

Remove-AzVMExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myExtensionName"

È anche possibile rimuovere un'estensione nel portale di Azure come indicato di seguito:You can also remove an extension in the Azure portal as follows:

  1. Selezionare una macchina virtuale.Select a VM.
  2. Scegliere Estensioni.Choose Extensions.
  3. Selezionare l'estensione desiderata.Select the desired extension.
  4. Scegliere Disinstalla.Choose 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

Passaggi successiviNext steps

Per altre informazioni sulle estensioni macchina virtuale, vedere Azure virtual machine extensions and features overview (Panoramica delle funzionalità e delle estensioni macchina virtuale di Azure).For more information about VM extensions, see Azure virtual machine extensions and features overview.