Distribuire l'applicazione nei set di scalabilità delle macchine virtualiDeploy your application on virtual machine scale sets

Per eseguire applicazioni nelle istanze di macchine virtuali (VM) in un set di scalabilità, è necessario prima installare i componenti dell'applicazione e i file necessari.To run applications on virtual machine (VM) instances in a scale set, you first need to install the application components and required files. Questo articolo descrive come creare un'immagine personalizzata di macchina virtuale per le istanze in un set di scalabilità o eseguire automaticamente gli script di installazione nelle istanze di macchine virtuali esistenti.This article introduces ways to build a custom VM image for instances in a scale set, or automatically run install scripts on existing VM instances. Si apprenderà anche come gestire gli aggiornamenti delle applicazioni o del sistema operativo in un set di scalabilità.You also learn how to manage application or OS updates across a scale set.

Creare un'immagine personalizzata della macchina virtualeBuild a custom VM image

Quando si usa una delle immagini della piattaforma Azure per creare le istanze nel set di scalabilità, non viene installato o configurato alcun software aggiuntivo.When you use one of the Azure platform images to create the instances in your scale set, no additional software is installed or configured. È possibile automatizzare l'installazione di questi componenti; tuttavia ciò si aggiunge al tempo necessario per eseguire il provisioning delle istanze di macchine virtuali nei set di scalabilità.You can automate the install of these components, however that adds to the time it takes to provision VM instances to your scale sets. Se si applicano numerose modifiche di configurazione alle istanze di macchine virtuali, si crea un sovraccarico di gestione con queste attività e script di configurazione.If you apply many configuration changes to the VM instances, there is management overhead with those configuration scripts and tasks.

Per ridurre la gestione della configurazione e il tempo per eseguire il provisioning di una macchina virtuale, è possibile creare un'immagine personalizzata della macchina virtuale pronta per eseguire l'applicazione non appena viene eseguito il provisioning di un'istanza nel set di scalabilità.To reduce the configuration management and time to provision a VM, you can create a custom VM image that is ready to run your application as soon as an instance is provisioned in the scale set. Per altre informazioni su come creare e usare un'immagine di VM personalizzata con un set di scalabilità, vedere le esercitazioni seguenti:For more information on how to create and use a custom VM image with a scale set, see the following tutorials:

Installare un'app con l'estensione dello script personalizzataInstall an app with the Custom Script Extension

L'estensione script personalizzata scarica ed esegue gli script sulle macchine virtuali di Azure.The Custom Script Extension downloads and executes scripts on Azure VMs. Questa estensione è utile per la configurazione post-distribuzione, l'installazione di software o qualsiasi altra attività di configurazione o gestione.This extension is useful for post deployment configuration, software installation, or any other configuration / management task. Gli script possono essere scaricati dall'archiviazione di Azure o da GitHub oppure possono essere forniti al portale di Azure durante il runtime dell'estensione.Scripts can be downloaded from Azure storage or GitHub, or provided to the Azure portal at extension run-time. Per altre informazioni su come creare e usare un'immagine di VM personalizzata con un set di scalabilità, vedere le esercitazioni seguenti:For more information on how to create and use a custom VM image with a scale set, see the following tutorials:

Installare un'app su una macchina virtuale Windows con PowerShell DSCInstall an app to a Windows VM with PowerShell DSC

PowerShell DSC (Desired State Configuration) è una piattaforma di gestione che permette di definire la configurazione dei computer di destinazione.PowerShell Desired State Configuration (DSC) is a management platform to define the configuration of target machines. Le configurazioni DSC definiscono che cosa installare nel computer e come configurare l'host.DSC configurations define what to install on a machine and how to configure the host. Un motore di Gestione configurazione locale viene eseguito in ogni nodo di destinazione che elabora le azioni necessarie in base alle configurazioni di cui è stato eseguito il push.A Local Configuration Manager (LCM) engine runs on each target node that processes requested actions based on pushed configurations.

L'estensione PowerShell DSC consente di personalizzare le istanze di macchine virtuali in un set di scalabilità con PowerShell.The PowerShell DSC extension lets you customize VM instances in a scale set with PowerShell. L'esempio seguente:The following example:

Viene applicata l'estensione DSC alle istanze di macchine virtuali myScaleSet nel gruppo di risorse denominato myResourceGroup.The DSC extension is applied to the myScaleSet VM instances in the resource group named myResourceGroup. Immettere nomi personalizzati come di seguito:Enter your own names as follows:

# Define the script for your Desired Configuration to download and run
$dscConfig = @{
  "wmfVersion" = "latest";
  "configuration" = @{
    "url" = "https://github.com/Azure-Samples/compute-automation-configurations/raw/master/dsc.zip";
    "script" = "configure-http.ps1";
    "function" = "WebsiteTest";
  };
}

# Get information about the scale set
$vmss = Get-AzureRmVmss `
                -ResourceGroupName "myResourceGroup" `
                -VMScaleSetName "myScaleSet"

# Add the Desired State Configuration extension to install IIS and configure basic website
$vmss = Add-AzureRmVmssExtension `
    -VirtualMachineScaleSet $vmss `
    -Publisher Microsoft.Powershell `
    -Type DSC `
    -TypeHandlerVersion 2.24 `
    -Name "DSC" `
    -Setting $dscConfig

# Update the scale set and apply the Desired State Configuration extension to the VM instances
Update-AzureRmVmss `
    -ResourceGroupName "myResourceGroup" `
    -Name "myScaleSet"  `
    -VirtualMachineScaleSet $vmss

Se il criterio di aggiornamento nel set di scalabilità è manuale, aggiornare le istanze di macchine virtuali con Update-AzureRmVmssInstance.If the upgrade policy on your scale set is manual, update your VM instances with Update-AzureRmVmssInstance. Questo cmdlet applica la configurazione aggiornata del set di scalabilità alle istanze di macchine virtuali e installa l'applicazione.This cmdlet applies the updated scale set configuration to the VM instances and installs your application.

Installare un'app su una VM Linux con cloud-initInstall an app to a Linux VM with cloud-init

Cloud-init è un approccio diffuso per personalizzare una macchina virtuale Linux al primo avvio.Cloud-init is a widely used approach to customize a Linux VM as it boots for the first time. Cloud-init consente di installare pacchetti e scrivere file o configurare utenti e impostazioni di sicurezza.You can use cloud-init to install packages and write files, or to configure users and security. Quando cloud-init viene eseguito durante il processo di avvio iniziale non vi sono altri passaggi o agenti necessari per applicare la configurazione.As cloud-init runs during the initial boot process, there are no additional steps or required agents to apply your configuration.

Cloud-init funziona anche fra distribuzioni.Cloud-init also works across distributions. Ad esempio, non si usa apt-get install o yum install per installare un pacchetto.For example, you don't use apt-get install or yum install to install a package. In alternativa, è possibile definire un elenco di pacchetti da installare.Instead you can define a list of packages to install. Cloud-init userà automaticamente lo strumento di gestione del pacchetto nativo per la distribuzione selezionata.Cloud-init automatically uses the native package management tool for the distro you select.

Per altre informazioni, incluso un file cloud-init.txt di esempio, vedere Usare cloud-init per personalizzare le macchine virtuali di Azure.For more information, including an example cloud-init.txt file, see Use cloud-init to customize Azure VMs.

Per creare un set di scalabilità e usare un file cloud-init, aggiungere il parametro --custom-data al comando az vmss create e specificare il nome di un file cloud-int.To create a scale set and use a cloud-init file, add the --custom-data parameter to the az vmss create command and specify the name of a cloud-init file. L'esempio seguente crea un set di scalabilità denominato myScaleSet in myResourceGroup e configura le istanze di macchine virtuali con un file denominato cloud-init.txt.The following example creates a scale set named myScaleSet in myResourceGroup and configures VM instances with a file named cloud-init.txt. Immettere i nomi personalizzati nel modo seguente:Enter your own names as follows:

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image UbuntuLTS \
  --upgrade-policy-mode automatic \
  --custom-data cloud-init.txt \
  --admin-username azureuser \
  --generate-ssh-keys

Installare le applicazioni con gli aggiornamenti del sistema operativoInstall applications with OS updates

Quando sono disponibili nuove versioni del sistema operativo, è possibile usare o creare una nuova immagine personalizzata e distribuire gli aggiornamenti del sistema operativo a un set di scalabilità.When new OS releases are available, you can use or build a new custom image and deploy OS upgrades to a scale set. Ogni istanza di macchina virtuale viene aggiornata all'immagine più recente specificata.Each VM instance is upgraded to the latest image that you specify. È possibile usare un'immagine personalizzata con l'applicazione preinstallata, l'estensione dello script personalizzata o PowerShell DSC per rendere l'applicazione automaticamente disponibile quando si esegue l'aggiornamento.You can use a custom image with the application pre-installed, the Custom Script Extension, or PowerShell DSC to have your application automatically available as you perform the upgrade. Potrebbe essere necessario pianificare la manutenzione dell'applicazione durante l'esecuzione di questo processo per verificare che non si siano verificati problemi di compatibilità delle versioni.You may need to plan for application maintenance as you perform this process to ensure that there are no version compatibility issues.

Se si usa un'immagine di macchina virtuale personalizzata con l'applicazione preinstallata, è possibile integrare gli aggiornamenti dell'applicazione con una pipeline di distribuzione per creare nuove immagini e distribuire gli aggiornamenti del sistema operativo nel set di scalabilità.If you use a custom VM image with the application pre-installed, you could integrate the application updates with a deployment pipeline to build the new images and deploy OS upgrades across the scale set. Questo approccio consente alla pipeline di prelevare le compilazioni più recenti dell'applicazione, creare e convalidare un'immagine di macchina virtuale, quindi aggiornare le istanze di macchine virtuali nel set di scalabilità.This approach allows the pipeline to pick up the latest application builds, create and validate a VM image, then upgrade the VM instances in the scale set. Per eseguire una pipeline di distribuzione che crea e distribuisce gli aggiornamenti dell'applicazione tra le immagini di macchine virtuali personalizzate, è possibile creare un'immagine Packer e distribuirla con Visual Studio Team Services oppure usare un'altra piattaforma come Spinnaker o Jenkins.To run a deployment pipeline that builds and deploys application updates across custom VM images, you could create a Packer image and deploy with Visual Studio Team Services, or use another platform such as Spinnaker or Jenkins.

Passaggi successiviNext steps

Quando si compilano e distribuiscono applicazioni ai set di scalabilità, è possibile esaminare Panoramica sulla progettazione di set di scalabilità.As you build and deploy applications to your scale sets, you can review the Scale Set Design Overview. Per altre informazioni su come gestire il set di scalabilità, vedere Usare PowerShell per gestire i set di scalabilità.For more information on how to manage your scale set, see Use PowerShell to manage your scale set.