Le applicazioni vm sono un tipo di risorsa in Azure Compute Gallery (noto in precedenza come Raccolta immagini condivise) che semplifica la gestione, la condivisione e la distribuzione globale delle applicazioni per le macchine virtuali.
Verificare che l'account di archiviazione abbia accesso a livello pubblico o usare un URI di firma di accesso condiviso con privilegi di lettura, in quanto altri livelli di restrizione non riescono le distribuzioni. È possibile usare Storage Explorer per creare rapidamente un URI di firma di accesso condiviso, se non ne è già disponibile uno.
Se si usa PowerShell, è necessario usare la versione 3.11.0 del modulo Az.Storage.
Scegliere un'opzione seguente per creare la definizione e la versione dell'applicazione vm:
- Passare alla portale di Azure, quindi cercare e selezionare Raccolta di calcolo di Azure.
- Selezionare la raccolta da usare nell'elenco.
- Nella pagina della raccolta selezionare Aggiungi nella parte superiore della pagina e quindi selezionare Definizione dell'applicazione vm dall'elenco a discesa. Verrà visualizzata la pagina Crea una definizione di applicazione vm.
- Nella scheda Informazioni di base immettere un nome per l'applicazione e scegliere se l'applicazione è per le macchine virtuali che eseguono Linux o Windows.
- Selezionare la scheda Opzioni di pubblicazione se si vuole specificare una delle impostazioni facoltative seguenti per la definizione dell'applicazione vm:
- Descrizione della definizione dell'applicazione della macchina virtuale.
- Data di scadenza
- Collegamento a un contratto di licenza
- URI di un'informativa sulla privacy
- URI per le note sulla versione
- Al termine, selezionare Rivedi e crea.
- Al termine della convalida, selezionare Crea per distribuire la definizione.
- Una volta completata la distribuzione, selezionare Vai alla risorsa.
- Nella pagina dell'applicazione selezionare Crea una versione dell'applicazione vm. Verrà visualizzata la pagina Crea una versione dell'applicazione vm.
- Immettere un numero di versione come 1.0.0.
- Selezionare l'area in cui è stato caricato il pacchetto dell'applicazione.
- In Pacchetto dell'applicazione di origine selezionare Sfoglia. Selezionare l'account di archiviazione, quindi il contenitore in cui si trova il pacchetto. Selezionare il pacchetto dall'elenco e quindi selezionare Seleziona al termine. In alternativa, è possibile incollare l'URI di firma di accesso condiviso in questo campo, se preferito.
- Digitare lo script di installazione. È anche possibile specificare lo script di disinstallazione e lo script di aggiornamento. Per informazioni su come creare gli script, vedere Panoramica.
- Se si dispone di un file di configurazione predefinito caricato in un account di archiviazione, è possibile selezionarlo in Configurazione predefinita.
- Selezionare Escludi dalla versione più recente se non si vuole che questa versione venga visualizzata come versione più recente quando si crea una macchina virtuale.
- Per Data di fine vita scegliere una data futura per tenere traccia del momento in cui questa versione deve essere ritirata. Non viene eliminato o rimosso automaticamente, ma solo per il proprio rilevamento.
- Per replicare questa versione in altre aree, selezionare la scheda Replica e aggiungere altre aree e apportare modifiche al numero di repliche per area. L'area originale in cui è stata creata la versione deve trovarsi nell'elenco e non può essere rimossa.
- Al termine delle modifiche, selezionare Rivedi e crea nella parte inferiore della pagina.
- Quando la convalida viene visualizzata come passata, selezionare Crea per distribuire la versione dell'applicazione vm.
È ora possibile creare una macchina virtuale e distribuirla usando il portale. È sufficiente creare la macchina virtuale come di consueto e nella scheda Avanzate scegliere Selezionare un'applicazione vm da installare.
Selezionare l'applicazione vm dall'elenco e quindi selezionare Salva nella parte inferiore della pagina.
Se sono presenti più applicazioni di macchine virtuali da installare, è possibile impostare di nuovo l'ordine di installazione per ogni applicazione vm nella scheda Avanzate.
È anche possibile distribuire l'applicazione vm in macchine virtuali attualmente in esecuzione. Selezionare l'opzione Estensioni e applicazioni in Impostazioni nel menu a sinistra quando si visualizzano i dettagli della macchina virtuale nel portale.
Scegliere Applicazioni vm e quindi Selezionare Aggiungi applicazione per aggiungere l'applicazione vm.
Selezionare l'applicazione vm dall'elenco e quindi selezionare Salva nella parte inferiore della pagina.
Per visualizzare lo stato dell'applicazione della macchina virtuale, passare alla scheda Estensioni e alle impostazioni delle applicazioni e controllare lo stato di VMAppExtension:
Per visualizzare lo stato dell'applicazione della macchina virtuale per vmSS, passare alla pagina VMSS, Istanze, selezionare una di esse, quindi passare a VMAppExtension:
Le applicazioni vm richiedono l'interfaccia della riga di comando di Azure versione 2.30.0 o successiva.
Creare la definizione dell'applicazione vm usando az sig gallery-application create. In questo esempio viene creata una definizione di applicazione vm denominata myApp per macchine virtuali basate su Linux.
az sig gallery-application create \
--application-name myApp \
--gallery-name myGallery \
--resource-group myResourceGroup \
--os-type Linux \
--location "East US"
Creare una versione dell'applicazione vm usando az sig gallery-application version create. I caratteri consentiti per la versione sono numeri e punti. I numeri devono essere compresi nell'intervallo di un valore Integer a 32 bit. Formato: VersionePrincipale.VersioneSecondaria.Patch.
Sostituire i valori dei parametri con i propri.
az sig gallery-application version create \
--version-name 1.0.0 \
--application-name myApp \
--gallery-name myGallery \
--location "East US" \
--resource-group myResourceGroup \
--package-file-link "https://<storage account name>.blob.core.windows.net/<container name>/<filename>" \
--install-command "mv myApp .\myApp\myApp" \
--remove-command "rm .\myApp\myApp" \
--update-command "mv myApp .\myApp\myApp" \
--default-configuration-file-link "https://<storage account name>.blob.core.windows.net/<container name>/<filename>"\
Impostare un'applicazione vm su una macchina virtuale esistente usando az vm application set e sostituire i valori dei parametri con i propri.
az vm application set \
--resource-group myResourceGroup \
--name myVM \
--app-version-ids /subscriptions/{subID}/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 \
--treat-deployment-as-failure true
Per impostare più applicazioni in una macchina virtuale:
az vm application set \
--resource-group myResourceGroup \
--name myVM \
--app-version-ids /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp2/versions/1.0.1 \
--treat-deployment-as-failure true true
Per aggiungere un'applicazione a un set di scalabilità di macchine virtuali, usare az vmss application set:
az vmss application set \
--resource-group myResourceGroup \
--name myVmss \
--app-version-ids /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 \
--treat-deployment-as-failure true
Per aggiungere più applicazioni a un set di scalabilità di macchine virtuali:
az vmss application set \
--resource-group myResourceGroup \
--name myVmss
--app-version-ids /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp2/versions/1.0.0 \
--treat-deployment-as-failure true
Per verificare lo stato di distribuzione della macchina virtuale dell'applicazione, usare az vm get-instance-view:
az vm get-instance-view -g myResourceGroup -n myVM --query "instanceView.extensions[?name == 'VMAppExtension']"
Per verificare lo stato di distribuzione del set di scalabilità di macchine virtuali dell'applicazione, usare az vmss get-instance-view:
az vmss get-instance-view --ids (az vmss list-instances -g myResourceGroup -n myVmss --query "[*].id" -o tsv) --query "[*].extensions[?name == 'VMAppExtension']"
Nota
Il comando di stato della distribuzione VMSS precedente non elenca l'ID istanza con il risultato. Per visualizzare l'ID istanza con lo stato dell'estensione in ogni istanza, sono necessari alcuni script aggiuntivi. Vedere l'esempio seguente dell'interfaccia della riga di comando di VMSS che contiene la sintassi di PowerShell:
$ids = az vmss list-instances -g myResourceGroup -n myVmss --query "[*].{id: id, instanceId: instanceId}" | ConvertFrom-Json
$ids | Foreach-Object {
$iid = $_.instanceId
Write-Output "instanceId: $iid"
az vmss get-instance-view --ids $_.id --query "extensions[?name == 'VMAppExtension']"
}
Creare la definizione dell'applicazione vm usando New-AzGalleryApplication
. In questo esempio viene creata un'app Linux denominata myApp nella raccolta di calcolo di Azure myGallery, nel gruppo di risorse myGallery e viene fornita una breve descrizione dell'applicazione vm per uso personale. Sostituire i valori in base alle esigenze.
$galleryName = "myGallery"
$rgName = "myResourceGroup"
$applicationName = "myApp"
New-AzGalleryApplication `
-ResourceGroupName $rgName `
-GalleryName $galleryName `
-Location "East US" `
-Name $applicationName `
-SupportedOSType Linux `
-Description "Backend Linux application for finance."
Creare una versione dell'applicazione usando New-AzGalleryApplicationVersion
. I caratteri consentiti per la versione sono numeri e punti. I numeri devono essere compresi nell'intervallo di un valore Integer a 32 bit. Formato: VersionePrincipale.VersioneSecondaria.Patch.
In questo esempio viene creato il numero di versione 1.0.0. Sostituire i valori delle variabili in base alle esigenze.
$galleryName = "myGallery"
$rgName = "myResourceGroup"
$applicationName = "myApp"
$version = "1.0.0"
New-AzGalleryApplicationVersion `
-ResourceGroupName $rgName `
-GalleryName $galleryName `
-GalleryApplicationName $applicationName `
-Name $version `
-PackageFileLink "https://<storage account name>.blob.core.windows.net/<container name>/<filename>" `
-DefaultConfigFileLink "https://<storage account name>.blob.core.windows.net/<container name>/<filename>" `
-Location "East US" `
-Install "mv myApp .\myApp\myApp" `
-Remove "rm .\myApp\myApp" `
Per aggiungere l'applicazione a una macchina virtuale esistente, ottenere la versione dell'applicazione e usarla per ottenere l'ID versione dell'applicazione vm. Usare l'ID per aggiungere l'applicazione alla configurazione della macchina virtuale.
$galleryName = "myGallery"
$rgName = "myResourceGroup"
$applicationName = "myApp"
$version = "1.0.0"
$vmName = "myVM"
$vm = Get-AzVM -ResourceGroupName $rgname -Name $vmName
$appVersion = Get-AzGalleryApplicationVersion `
-GalleryApplicationName $applicationName `
-GalleryName $galleryName `
-Name $version `
-ResourceGroupName $rgName
$packageId = $appVersion.Id
$app = New-AzVmGalleryApplication -PackageReferenceId $packageId
Add-AzVmGalleryApplication -VM $vm -GalleryApplication $app -TreatFailureAsDeploymentFailure true
Update-AzVM -ResourceGroupName $rgName -VM $vm
Per aggiungere l'applicazione a un set di scalabilità di macchine virtuali:
$vmss = Get-AzVmss -ResourceGroupName $rgname -Name $vmssName
$appVersion = Get-AzGalleryApplicationVersion `
-GalleryApplicationName $applicationName `
-GalleryName $galleryName `
-Name $version `
-ResourceGroupName $rgName
$packageId = $appVersion.Id
$app = New-AzVmssGalleryApplication -PackageReferenceId $packageId
Add-AzVmssGalleryApplication -VirtualMachineScaleSetVM $vmss.VirtualMachineProfile -GalleryApplication $app
Update-AzVmss -ResourceGroupName $rgName -VirtualMachineScaleSet $vmss -VMScaleSetName $vmssName
Verificare che l'applicazione abbia avuto esito positivo:
$rgName = "myResourceGroup"
$vmName = "myVM"
$result = Get-AzVM -ResourceGroupName $rgName -VMName $vmName -Status
$result.Extensions | Where-Object {$_.Name -eq "VMAppExtension"} | ConvertTo-Json
Per verificare il set di scalabilità di macchine virtuali:
$rgName = "myResourceGroup"
$vmssName = "myVMss"
$result = Get-AzVmssVM -ResourceGroupName $rgName -VMScaleSetName $vmssName -InstanceView
$resultSummary = New-Object System.Collections.ArrayList
$result | ForEach-Object {
$res = @{ instanceId = $_.InstanceId; vmappStatus = $_.InstanceView.Extensions | Where-Object {$_.Name -eq "VMAppExtension"}}
$resultSummary.Add($res) | Out-Null
}
$resultSummary | ConvertTo-Json -Depth 5
Creare la definizione dell'applicazione.
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/galleries/\<**galleryName**\>/applications/\<**applicationName**\>?api-version=2019-03-01
{
"location": "West US",
"name": "myApp",
"properties": {
"supportedOSType": "Windows | Linux",
"endOfLifeDate": "2020-01-01"
}
}
Nome campo |
Descrizione |
Limiti |
name |
Nome univoco per l'applicazione di macchine virtuali all'interno della raccolta |
Lunghezza massima di 117 caratteri. I caratteri consentiti sono lettere maiuscole o minuscole, cifre, trattini(-), punto (.), carattere di sottolineatura (_). Nomi non consentiti per terminare con period(.). |
supportedOSType |
Indica se si tratta di un'applicazione Windows o Linux |
"Windows" o "Linux" |
endOfLifeDate |
Data di fine vita futura per l'applicazione. Si noti che è solo per riferimento e non viene applicato. |
Data futura valida |
Creare una versione dell'applicazione vm.
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/galleries/\<**galleryName**\>/applications/\<**applicationName**\>/versions/\<**versionName**\>?api-version=2019-03-01
{
"location": "$location",
"properties": {
"publishingProfile": {
"source": {
"mediaLink": "$mediaLink",
"defaultConfigurationLink": "$configLink"
},
"manageActions": {
"install": "echo installed",
"remove": "echo removed",
"update": "echo update"
},
"targetRegions": [
{
"name": "$location1",
"regionalReplicaCount": 1
},
{ "name": "$location1" }
]
},
"endofLifeDate": "datetime",
"excludeFromLatest": "true | false"
}
}
Nome campo |
Descrizione |
Limiti |
location |
Percorso di origine per la versione dell'applicazione vm |
Area di Azure valida |
mediaLink |
URL contenente il pacchetto della versione dell'applicazione |
URL di archiviazione valido ed esistente |
defaultConfigurationLink |
Facoltativo. URL contenente la configurazione predefinita, che può essere sottoposta a override in fase di distribuzione. |
URL di archiviazione valido ed esistente |
Installa |
Comando per installare l'applicazione |
Comando valido per il sistema operativo specificato |
Rimuovi |
Comando per rimuovere l'applicazione |
Comando valido per il sistema operativo specificato |
Update |
Facoltativo. Comando per aggiornare l'applicazione. Se non specificato e è necessario un aggiornamento, la versione precedente viene rimossa e quella nuova installata. |
Comando valido per il sistema operativo specificato |
targetRegions/name |
Nome di un'area in cui eseguire la replica |
Convalidare l'area di Azure |
targetRegions/regionalReplicaCount |
Facoltativo. Numero di repliche nell'area da creare. Assume il valore predefinito 1. |
Intero compreso tra 1 e 3 inclusi |
endOfLifeDate |
Data di fine vita futura per la versione dell'applicazione. Si noti che si tratta solo per il riferimento del cliente e non viene applicato. |
Data futura valida |
excludeFromLatest |
Se specificato, questa versione non verrà considerata per la versione più recente. |
Vero o falso |
Per aggiungere una versione dell'applicazione vm a una macchina virtuale, eseguire un'operazione PUT nella macchina virtuale.
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/virtualMachines/\<**VMName**\>?api-version=2019-03-01
{
"properties": {
"applicationProfile": {
"galleryApplications": [
{
"order": 1,
"packageReferenceId": "/subscriptions/{subscriptionId}/resourceGroups/<resource group>/providers/Microsoft.Compute/galleries/{gallery name}/applications/{application name}/versions/{version}",
"configurationReference": "{path to configuration storage blob}",
"treatFailureAsDeploymentFailure": false
}
]
}
},
"name": "{vm name}",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resource group}/providers/Microsoft.Compute/virtualMachines/{vm name}",
"location": "{vm location}"
}
Per applicare l'applicazione vm a un set di scalabilità uniforme:
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/
virtualMachineScaleSets/\<**VMSSName**\>?api-version=2019-03-01
{
"properties": {
"virtualMachineProfile": {
"applicationProfile": {
"galleryApplications": [
{
"order": 1,
"packageReferenceId": "/subscriptions/{subscriptionId}/resourceGroups/<resource group>/providers/Microsoft.Compute/galleries/{gallery name}/applications/{application name}/versions/{version}",
"configurationReference": "{path to configuration storage blob}",
"treatFailureAsDeploymentFailure": false
}
]
}
}
},
"name": "{vm name}",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resource group}/providers/Microsoft.Compute/virtualMachines/{vm name}",
"location": "{vm location}"
}
Nome campo |
Descrizione |
Limiti |
ordine |
Facoltativo. Ordine in cui devono essere distribuite le applicazioni. Vedere di seguito. |
Convalidare l'intero |
packageReferenceId |
Riferimento alla versione dell'applicazione della raccolta |
Informazioni di riferimento sulla versione dell'applicazione valide |
configurationReference |
Facoltativo. URL completo di un BLOB di archiviazione contenente la configurazione per questa distribuzione. In questo modo verrà eseguito l'override di qualsiasi valore fornito per defaultConfiguration in precedenza. |
Informazioni di riferimento valide sul BLOB di archiviazione |
treatFailureAsDeploymentFailure |
Facoltativo. Stato del provisioning per l'app vm. Se impostato su false, lo stato del provisioning verrà sempre visualizzato "succeeded" indipendentemente dall'errore di distribuzione dell'app. |
True o False |
Il campo dell'ordine può essere usato per specificare le dipendenze tra le applicazioni. Le regole per l'ordine sono le seguenti:
Case |
Significato installazione |
Significato errore |
Nessun ordine specificato |
Le applicazioni non ordinate vengono installate dopo le applicazioni ordinate. Non esiste alcuna garanzia di ordine di installazione tra le applicazioni non ordinate. |
Gli errori di installazione di altre applicazioni, se ordinati o non ordinati, non influiscono sull'installazione di applicazioni non ordinate. |
Valori di ordine duplicati |
L'applicazione viene installata in qualsiasi ordine rispetto ad altre applicazioni con lo stesso ordine. Tutte le applicazioni dello stesso ordine verranno installate dopo quelle con ordini inferiori e prima di quelle con ordini più elevati. |
Se non è stato possibile installare un'applicazione precedente con un ordine inferiore, nessuna applicazione con questo ordine di installazione. Se un'applicazione con questo ordine non riesce a eseguire l'installazione, nessuna applicazione con un'installazione di ordine superiore. |
Aumento degli ordini |
L'applicazione verrà installata dopo quelli con ordini inferiori e prima di quelli con ordini più elevati. |
Se non è stato possibile installare un'applicazione precedente con un ordine inferiore, l'applicazione non verrà installata. Se l'applicazione non riesce a eseguire l'installazione, non viene installata alcuna applicazione con un ordine superiore. |
La risposta include il modello di macchina virtuale completo. Di seguito sono riportate le parti pertinenti.
{
"name": "{vm name}",
"id": "{vm id}",
"type": "Microsoft.Compute/virtualMachines",
"location": "{vm location}",
"properties": {
"applicationProfile": {
"galleryApplications": ""
},
"provisioningState": "Updating"
},
"resources": [
{
"name": "VMAppExtension",
"id": "{extension id}",
"type": "Microsoft.Compute/virtualMachines/extensions",
"location": "centraluseuap",
"properties": "@{autoUpgradeMinorVersion=True; forceUpdateTag=7c4223fc-f4ea-4179-ada8-c8a85a1399f5; provisioningState=Creating; publisher=Microsoft.CPlat.Core; type=VMApplicationManagerLinux; typeHandlerVersion=1.0; settings=}"
}
]
}
Se le applicazioni vm non sono ancora state installate nella macchina virtuale, il valore sarà vuoto.
Per ottenere il risultato della visualizzazione dell'istanza della macchina virtuale:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/virtualMachines/\<**VMName**\>/instanceView?api-version=2019-03-01
Il risultato è simile al seguente:
{
...
"extensions" [
...
{
"name": "VMAppExtension",
"type": "Microsoft.CPlat.Core.VMApplicationManagerLinux",
"typeHandlerVersion": "1.0.9",
"statuses": [
{
"code": "ProvisioningState/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"message": "Enable succeeded: {\n \"CurrentState\": [\n {\n \"applicationName\": \"doNothingLinux\",\n \"version\": \"1.0.0\",\n \"result\": \"Install SUCCESS\"\n },\n {
\n \"applicationName\": \"badapplinux\",\n \"version\": \"1.0.0\",\n \"result\": \"Install FAILED Error executing command \u0027exit 1\u0027: command terminated with exit status=1\"\n }\n ],\n \"ActionsPerformed\": []\n}
"
}
]
}
...
]
}
Lo stato dell'app della macchina virtuale è nel messaggio di stato del risultato dell'estensione dell'app della macchina virtuale nella visualizzazione dell'istanza.
Per ottenere lo stato di un'applicazione VMSS:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/ virtualMachineScaleSets/\<**VMSSName**\>/virtualMachines/<**instanceId**>/instanceView?api-version=2019-03-01
L'output è simile all'esempio di macchina virtuale precedente.