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

Le estensioni della macchina virtuale di Azure sono piccole applicazioni che eseguono attività di configurazione e automazione post-distribuzione nelle 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 questo tipo 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 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 della macchina virtuale, i prerequisiti per l'uso di queste estensioni di Azure e indicazioni su come rilevare, gestire e rimuovere le estensioni.This document provides an overview of VM extensions, prerequisites for using Azure VM extensions, and guidance on how to detect, manage, and remove VM extensions. Questo documento contiene 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 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 are:

Oltre alle estensioni specifiche del processo, è disponibile un'estensione dello script personalizzata 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 macchina virtuale.The Custom Script extension for Linux allows any Bash script to be run on a virtual machine. 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

Ogni estensione macchina virtuale può avere un insieme specifico di prerequisiti.Each virtual machine extension might have its own set of prerequisites. Ad esempio, un prerequisito dell'estensione macchina virtuale per 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 VM di AzureAzure VM agent

L'agente VM 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 virtual machine and the Azure fabric controller. L'agente VM è responsabile di molti aspetti funzionali della distribuzione e della gestione delle macchine virtuali di Azure, tra cui l'esecuzione delle estensioni della macchina virtuale.The VM agent is responsible for many functional aspects of deploying and managing Azure virtual machines, including running VM extensions. L'agente VM 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.

Per informazioni sui sistemi operativi supportati e per le istruzioni di installazione, vedere l'agente VM 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 della macchina virtuale di diverso tipo sono disponibili per l'uso con le 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 l'interfaccia della riga di comando di Azure, sostituendo il percorso di esempio con quello scelto.To see a complete list, run the following command with the Azure CLI, replacing the example location with the location of your choice.

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

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 macchina virtuale già distribuita.Azure virtual machine extensions can be run on existing virtual machines, which are 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 virtual machines 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 virtual machine.

Interfaccia della riga di comando di AzureAzure CLI

Le estensioni della macchina virtuale di Azure possono essere eseguite in una macchina virtuale esistente usando il comando az vm extension set.Azure virtual machine extensions can be run against an existing virtual machine by using the az vm extension set command. Questo esempio esegue l'estensione script personalizzata in una macchina virtuale.This example runs the custom script extension against a virtual machine.

az vm extension set `
  --resource-group exttest `
  --vm-name exttest `
  --name customScript `
  --publisher Microsoft.Azure.Extensions `
  --settings '{"fileUris": ["https://gist.github.com/ahmetalpbalkan/b5d4a856fe15464015ae87d5587a4439/raw/466f5c30507c990a4d5a2f5c79f901fa89a80841/hello.sh"],"commandToExecute": "./hello.sh"}'

Lo script genera un output simile al testo seguente:The script produces output similar to the following text:

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 della macchina virtuale possono essere applicate a una macchina virtuale esistente tramite il portale di Azure.VM extensions can be applied to an existing virtual machine through the Azure portal. A tale scopo, selezionare la macchina virtuale, scegliere Estensioni, fare clic su Aggiungi.To do so, select the virtual machine, choose Extensions, and click Add. Selezionare l'estensione desiderata dall'elenco di quelle disponibili e quindi seguire le istruzioni della procedura guidata.Select 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 personalizzata 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. Il codice JSON seguente, ad esempio, è tratto da un modello di Resource Manager.For example, the following JSON is taken from a Resource Manager template. Il modello distribuisce un set di macchine virtuali con carico bilanciato e un database SQL di Azure, quindi installa un'applicazione .NET Core in ogni macchina virtuale.The template 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/', 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, vedere Creazione di modelli di Azure Resource Manager.For more information, 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 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 crittografa i dati e li decrittografa 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 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. 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/', 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.Moving the command to execute property to the protected configuration secures the execution string.

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

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 personalizzata, i dettagli sull'esecuzione dello script sono disponibili in locale nella macchina virtuale in cui è stata eseguita l'estensione.For example, 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 di un'estensione macchina virtuale in una macchina virtuale, usare il comando dell'interfaccia della riga di comando seguente di Azure per ottenere lo stato dell'estensione.After a virtual machine extension has been run against a virtual machine, use the following Azure CLI command to return extension status. Sostituire i nomi dei parametri di esempio con i valori desiderati.Replace example parameter names with your own values.

az vm extension list --resource-group myResourceGroup --vm-name myVM -o table

L'output ha un aspetto simile al testo seguente:The output looks like the following text:

AutoUpgradeMinorVersion    Location    Name          ProvisioningState    Publisher                   ResourceGroup      TypeHandlerVersion  VirtualMachineExtensionType
-------------------------  ----------  ------------  -------------------  --------------------------  ---------------  --------------------  -----------------------------
True                       westus      customScript  Succeeded            Microsoft.Azure.Extensions  exttest                             2  customScript

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.

Rieseguire un'estensione macchina virtualeRerun a VM extension

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 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, eseguire il comando seguente con l'interfaccia della riga di comando di Azure.To remove an extension, run the following command with the Azure CLI. Sostituire i nomi dei parametri di esempio con i valori desiderati.Replace example parameter names with your own values.

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

È possibile rimuovere un'estensione usando i passaggi seguenti nel portale di Azure:You can remove an extension by using the following steps in the Azure portal:

  1. Selezionare una macchina virtuale.Select a virtual machine.
  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 per DockerDocker extension Installare il daemon Docker per supportare i comandi Docker remoti.Install the Docker daemon to support remote Docker commands. Estensione macchina virtuale per DockerDocker VM extension
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