Estensioni della macchina virtuale e funzionalità per LinuxVirtual machine extensions and features for Linux

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 dello script personalizzata per Linux consente l'esecuzione di qualsiasi script Bash su una VM.The Custom Script extension for Linux allows any Bash 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 di script personalizzata per le VM Linux.For more information, see Linux VM Custom Script extension.

PrerequisitiPrerequisites

Per gestire l'estensione nella macchina virtuale, è necessario aver installato l'agente Linux di Azure.To handle the extension on the VM, you need the Azure Linux 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 VM di Azure per Linux è noto come agente Linux.The Azure VM Agent for Linux is known as the Linux 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 Linux viene eseguito su più sistemi operativi, tuttavia il framework delle estensioni prevede un limite per i sistemi operativi.The Linux 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 gruppo di sicurezza di rete per Archiviazione.For extensions that require access to Azure Storage, you can allow access using Azure NSG Service Tags for Storage.

Per reindirizzare le richieste di traffico dell'agente, l'agente Linux include il supporto del server proxy.To redirect agent traffic requests, the Linux Agent has proxy server support. Tuttavia, il supporto del server proxy non applica le estensioni.However, this proxy server support does not apply extensions. È necessario configurare ogni singola estensione per usare un proxy.You must configure each individual extension to work with a proxy.

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 az vm extension image list.To see a complete list, use az vm extension image list. L'esempio seguente elenca tutte le estensioni disponibili nella posizione westus:The following example lists all available extensions in the westus location:

az vm extension image list --location westus --output table

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.

Interfaccia della riga di comando di AzureAzure CLI

Le estensioni macchina virtuale di Azure possono essere eseguite in una VM esistente con il comando az vm extension set.Azure VM extensions can be run against an existing VM with the az vm extension set command. L'esempio seguente esegue l'estensione di script personalizzato su una VM denominata myVM in un gruppo di risorse denominato myResourceGroup:The following example runs the Custom Script extension against a VM named myVM in a resource group named myResourceGroup:

az vm extension set `
  --resource-group myResourceGroup `
  --vm-name myVM `
  --name customScript `
  --publisher Microsoft.Azure.Extensions `
  --settings '{"fileUris": ["https://raw.githubusercontent.com/me/project/hello.sh"],"commandToExecute": "./hello.sh"}'

Quando l'estensione viene eseguita correttamente, l'output è simile all'esempio seguente:When the extension runs correctly, the output is similar to the following example:

info:    Executing command vm extension set
+ Looking up the VM "myVM"
+ Installing extension "CustomScript", VM: "mvVM"
info:    vm extension set command OK

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'immagine seguente illustra l'installazione dell'estensione di script personalizzato per Linux dal portale di Azure:The following image shows the installation of the Linux Custom Script extension from the Azure portal:

Installare l'estensione di script personalizzata

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 that 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/', concat(variables('vmName'),copyindex()))]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.0",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
    }
}

Per altre informazioni sulla creazione di modelli di Resource Manager, vedere Creazione di modelli di Azure Resource Manager.For more information on creating Resource Manager templates, see Authoring Azure Resource Manager templates.

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 personalizzata per Linux.The following example shows an instance of the Custom Script extension for Linux. 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/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.0",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ],
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

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/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.0",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ]
    },
    "protectedSettings": {
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

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.

Aggiornamenti dell'agenteAgent updates

L'agente di macchine virtuali Linux contiene il codice dell'agente di provisioning e il codice per la gestione delle estensioni in un unico pacchetto e non possono essere separati.The Linux VM Agent contains Provisioning Agent Code and Extension Handling code in one package, which cannot be separated. È possibile disabilitare l'agente di provisioning quando si vuole effettuare il provisioning in Azure usando cloud-init.You can disable the Provisioning Agent when you want to provision on Azure using cloud-init. A questo scopo, vedere uso di cloud-init.To do this, see using cloud-init.

Le versioni supportate degli agenti possono usare gli aggiornamenti automatici.Supported versions of the Agents can use automatic updates. Il solo codice a poter essere aggiornato è il codice di gestione delle estensioni, non il codice di provisioning.The only code that can be updated is the Extension Handling code, not the provisioning code. Il codice dell'agente di provisioning è un codice da eseguire una volta.The Provisioning Agent code is run-once code.

Il codice di gestione delle estensioni è 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 di gestione delle estensioni.Updates contain security fixes, bug fixes, and enhancements to the Extension Handling code.

Quando l'agente è installato, viene creato un daemon padre.When the agent is installed, a parent daemon is created. Questo elemento padre genera quindi un processo figlio che viene usato per gestire le estensioni.This parent then spawns a child process that is used to handle extensions. Se un aggiornamento è disponibile per l'agente, viene scaricato, l'elemento padre arresta il processo figlio, lo aggiorna, quindi lo riavvia.If an update is available for the agent, it is downloaded, the parent stops the child process, upgrades it, then restarts it. In caso di problema con l'aggiornamento, il processo padre esegue il rollback alla versione figlio precedente.Should there be a problem with the update, the parent process rolls back to the previous child version.

Il processo padre non può essere aggiornato automaticamente.The parent process cannot be auto updated. L'elemento padre può essere aggiornato solo da un aggiornamento del pacchetto di distribuzione.The parent can only be updated by a distro package update.

Per verificare quale versione è in esecuzione, controllare waagent come segue:To check what version you are running, check the waagent as follows:

waagent --version

L'output è simile all'esempio seguente:The output is similar to the following example:

WALinuxAgent-2.2.17 running on ubuntu 16.04
Python: 3.5.2
Goal state agent: 2.2.18

Nell'output di esempio precedente l'elemento padre o la "versione distribuita del pacchetto" è WALinuxAgent-2.2.17In the preceding example output, the parent or 'package deployed version' is WALinuxAgent-2.2.17

"Goal state agent" è la versione dell'aggiornamento automatico.The 'Goal state agent' is the auto update version.

È consigliabile impostare sempre l'aggiornamento automatico per l'agente, AutoUpdate.Enabled=y.It is highly recommended that you always have auto update for the agent, AutoUpdate.Enabled=y. Se non viene abilitato, è necessario continuare ad aggiornare manualmente l'agente, senza ottenere correzioni di bug e della sicurezza.Not having this enabled means you need to keep manually updating the agent, and not get bug and security fixes.

Aggiornamenti delle estensioniExtension updates

Quando è disponibile l'aggiornamento di un'estensione, l'agente Linux lo scarica e lo installa.When an extension update is available, the Linux 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,':

    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.0",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },

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 az vm show e specificare il nome del gruppo di risorse e della macchina virtuale come indicato di seguito:To check, use az vm show and provide the resource group and VM name as follows:

az vm show --resource-group myResourceGroup --name myVM

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

  "resources": [
    {
      "autoUpgradeMinorVersion": true,
      "forceUpdateTag": null,
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/extensions/CustomScriptExtension",

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 /var/log/waagent.log.To see when an update to the extension occurred, review the agent logs on the VM at /var/log/waagent.log.

Nell'esempio seguente nella VM era installato Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025.In the example below, the VM had Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025 installed. Era disponibile un aggiornamento rapido per Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027:A hotfix was available to Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027:

INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Expected handler state: enabled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Decide which version to use
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Use version: 2.3.9027
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Current handler state is: NotInstalled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Download extension package
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Unpack extension package
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Download, message=Download succeeded
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Initialize extension directory
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update settings file: 0.settings
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Disable extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Launch command:diagnostic.py -disable
...
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Disable, message=Launch command succeeded: diagnostic.py -disable
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Launch command:diagnostic.py -update
2017/08/14 20:21:57 LinuxAzureDiagnostic started to handle.

Autorizzazioni dell'agenteAgent permissions

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

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 Linux, esaminare l'attività di quando il provisioning dell'estensione è stato eseguito in /var/log/waagent.logTo check the Linux Agent Log, look at the activity when your extension was being provisioned in /var/log/waagent.log

  2. Per informazioni più dettagliate, controllare i log effettivi dell'estensione in /var/log/azure/Check the actual extension logs for more details in /var/log/azure/

  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 macchina virtuale in una macchina virtuale, usare az vm get-instance-view per restituire lo stato dell'estensione, come segue:After a VM extension has been run against a VM, use az vm get-instance-view to return extension status as follows:

az vm get-instance-view \
    --resource-group rgName \
    --name myVM \
    --query "instanceView.extensions"

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

  {
    "name": "customScript",
    "statuses": [
      {
        "code": "ProvisioningState/failed/0",
        "displayStatus": "Provisioning failed",
        "level": "Error",
        "message": "Enable failed: failed to execute command: command terminated with exit status=127\n[stdout]\n\n[stderr]\n/bin/sh: 1: ech: not found\n",
        "time": null
      }
    ],
    "substatuses": null,
    "type": "Microsoft.Azure.Extensions.customScript",
    "typeHandlerVersion": "2.0.6"
  }

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.

Rieseguire un'estensione macchina virtualeRerun a VM extension

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 az vm extension delete, come segue:To remove an extension, use az vm extension delete as follows:

az vm extension delete \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name customScript

È 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 extension reference

Nome estensioneExtension name DESCRIZIONEDescription Altre informazioniMore information
Estensione script personalizzata per LinuxCustom Script extension for Linux Eseguire gli script in una macchina virtuale di AzureRun scripts against an Azure virtual machine Estensione script personalizzata per LinuxCustom Script extension for Linux
Estensione dell'accesso alle macchine virtualiVM Access extension Ripristinare l'accesso a una macchina virtuale di AzureRegain access to an Azure virtual machine Estensione dell'accesso alle macchine virtualiVM Access extension
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 alla VM 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.