VM-program är en resurstyp i Azure Compute Gallery (tidigare kallat delat bildgalleri) som förenklar hantering, delning och global distribution av program för dina virtuella datorer.
Kontrollera att lagringskontot har åtkomst på offentlig nivå eller använd en SAS-URI med läsbehörighet, eftersom andra begränsningsnivåer misslyckas med distributioner. Du kan använda Storage Explorer för att snabbt skapa en SAS-URI om du inte redan har en.
Om du använder PowerShell måste du använda version 3.11.0 av Az.Storage-modulen.
Välj ett alternativ nedan för att skapa din definition och version av det virtuella datorprogrammet:
- Gå till Azure-portalen och sök sedan efter och välj Azure Compute Gallery.
- Välj det galleri som du vill använda i listan.
- På sidan för galleriet väljer du Lägg till överst på sidan och väljer sedan VM-programdefinition i listrutan. Sidan Skapa en vm-programdefinition öppnas.
- På fliken Grundläggande anger du ett namn för ditt program och väljer om programmet är för virtuella datorer som kör Linux eller Windows.
- Välj fliken Publiceringsalternativ om du vill ange någon av följande valfria inställningar för din vm-programdefinition:
- En beskrivning av den virtuella datorns programdefinition.
- Slutdatum
- Länk till ett eula
- URI för en sekretesspolicy
- URI för viktig information
- När du är klar väljer du Granska + skapa.
- När verifieringen är klar väljer du Skapa för att få definitionen distribuerad.
- När distributionen är klar väljer du Gå till resurs.
- På sidan för programmet väljer du Skapa en vm-programversion. Sidan Skapa en vm-programversion öppnas.
- Ange ett versionsnummer som 1.0.0.
- Välj den region där du har laddat upp programpaketet.
- Under Källprogrampaket väljer du Bläddra. Välj lagringskontot och sedan containern där paketet finns. Välj paketet i listan och välj sedan Välj när du är klar. Du kan också klistra in SAS-URI:n i det här fältet om du vill.
- Skriv in installationsskriptet. Du kan också ange skriptet Avinstallera och Uppdatera. Se Översikt för information om hur du skapar skripten.
- Om du har en standardkonfigurationsfil som laddats upp till ett lagringskonto kan du välja den i Standardkonfiguration.
- Välj Exkludera från den senaste versionen om du inte vill att den här versionen ska visas som den senaste versionen när du skapar en virtuell dator.
- För Slutdatum väljer du ett datum i framtiden för att spåra när den här versionen ska dras tillbaka. Det tas inte bort eller tas inte bort automatiskt, det är bara för din egen spårning.
- Om du vill replikera den här versionen till andra regioner väljer du fliken Replikering och lägger till fler regioner och gör ändringar i antalet repliker per region. Den ursprungliga regionen där din version skapades måste finnas i listan och kan inte tas bort.
- När du är klar med ändringarna väljer du Granska + skapa längst ned på sidan.
- När verifieringen visas som godkänd väljer du Skapa för att distribuera den virtuella datorns programversion.
Nu kan du skapa en virtuell dator och distribuera det virtuella datorprogrammet till den med hjälp av portalen. Skapa bara den virtuella datorn som vanligt, och under fliken Avancerat väljer du Välj ett VM-program att installera.
Välj det virtuella datorprogrammet i listan och välj sedan Spara längst ned på sidan.
Om du har fler än ett vm-program att installera kan du ställa in installationsordningen för varje vm-program på fliken Avancerat.
Du kan också distribuera det virtuella datorprogrammet till virtuella datorer som körs. Välj alternativet Tillägg + program under Inställningar på den vänstra menyn när du visar information om den virtuella datorn i portalen.
Välj VM-program och välj sedan Lägg till program för att lägga till ditt VM-program.
Välj det virtuella datorprogrammet i listan och välj sedan Spara längst ned på sidan.
Om du vill visa status för vm-programmet går du till fliken Tillägg + program och kontrollerar status för VMAppExtension:
Om du vill visa vm-programstatus för VMSS går du till sidan VMSS, Instanser, väljer en av dem och går sedan till VMAppExtension:
Vm-program kräver Azure CLI version 2.30.0 eller senare.
Skapa vm-programdefinitionen med az sig gallery-application create. I det här exemplet skapar vi en vm-programdefinition med namnet myApp för Linux-baserade virtuella datorer.
az sig gallery-application create \
--application-name myApp \
--gallery-name myGallery \
--resource-group myResourceGroup \
--os-type Linux \
--location "East US"
Skapa en vm-programversion med az sig gallery-application version create. Tillåtna tecken för version är siffror och punkter. Tal måste ligga inom intervallet för ett 32-bitars heltal. Format: MajorVersion.MinorVersion.Korrigering.
Ersätt parametrarnas värden med dina egna.
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>"\
Ange ett virtuellt datorprogram till en befintlig virtuell dator med az vm application set och ersätt parametrarnas värden med dina egna.
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
För att ställa in flera program på en virtuell dator:
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
Om du vill lägga till ett program i en VMSS använder du 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
Så här lägger du till flera program i en VMSS:
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
Om du vill verifiera distributionsstatus för den virtuella programdatorn använder du az vm get-instance-view:
az vm get-instance-view -g myResourceGroup -n myVM --query "instanceView.extensions[?name == 'VMAppExtension']"
Om du vill verifiera programmets VMSS-distributionsstatus använder du 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']"
Kommentar
Ovanstående VMSS-distributionsstatuskommando visar inte instans-ID:t med resultatet. Om du vill visa instans-ID:t med statusen för tillägget i varje instans krävs ytterligare skriptning. Se exemplet för VMSS CLI nedan som innehåller PowerShell-syntax:
$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']"
}
Skapa den virtuella datorns programdefinition med hjälp av New-AzGalleryApplication
. I det här exemplet skapar vi en Linux-app med namnet myApp i myGallery Azure Compute Gallery i resursgruppen myGallery och jag har gett en kort beskrivning av vm-programmet för eget bruk. Ersätt värdena efter behov.
$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."
Skapa en version av ditt program med .New-AzGalleryApplicationVersion
Tillåtna tecken för version är siffror och punkter. Tal måste ligga inom intervallet för ett 32-bitars heltal. Format: MajorVersion.MinorVersion.Korrigering.
I det här exemplet skapar vi versionsnummer 1.0.0. Ersätt värdena för variablerna efter behov.
$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" `
Om du vill lägga till programmet i en befintlig virtuell dator hämtar du programversionen och använder den för att hämta version-ID:t för den virtuella datorns program. Använd ID:t för att lägga till programmet i vm-konfigurationen.
$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
Så här lägger du till programmet i en VMSS:
$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
Kontrollera att programmet lyckades:
$rgName = "myResourceGroup"
$vmName = "myVM"
$result = Get-AzVM -ResourceGroupName $rgName -VMName $vmName -Status
$result.Extensions | Where-Object {$_.Name -eq "VMAppExtension"} | ConvertTo-Json
Så här verifierar du för VMSS:
$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
Skapa programdefinitionen.
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"
}
}
Fältnamn |
beskrivning |
Begränsningar |
name |
Ett unikt namn för vm-programmet i galleriet |
Maximal längd på 117 tecken. Tillåtna tecken är versaler eller gemener, siffror, bindestreck(-), punkt (.), understreck (_). Namn som inte får avslutas med period(.). |
supportedOSType |
Oavsett om det här är ett Windows- eller Linux-program |
"Windows" eller "Linux" |
endOfLifeDate |
Ett framtida slutdatum för programmet. Observera att detta endast är för referens och tillämpas inte. |
Giltigt framtida datum |
Skapa en vm-programversion.
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"
}
}
Fältnamn |
beskrivning |
Begränsningar |
plats |
Källplats för den virtuella datorns programversion |
Giltig Azure-region |
mediaLink |
Url:en som innehåller programversionspaketet |
Giltig och befintlig lagrings-URL |
defaultConfigurationLink |
Valfritt. Url:en som innehåller standardkonfigurationen, som kan åsidosättas vid distributionstillfället. |
Giltig och befintlig lagrings-URL |
Installera |
Kommandot för att installera programmet |
Giltigt kommando för det angivna operativsystemet |
Ta bort |
Kommandot för att ta bort programmet |
Giltigt kommando för det angivna operativsystemet |
Uppdatera |
Valfritt. Kommandot för att uppdatera programmet. Om det inte anges och en uppdatering krävs tas den gamla versionen bort och den nya har installerats. |
Giltigt kommando för det angivna operativsystemet |
targetRegions/name |
Namnet på en region som ska replikeras till |
Verifiera Azure-region |
targetRegions/regionalReplicaCount |
Valfritt. Antalet repliker i regionen som ska skapas. Standardvärdet är 1. |
Heltal mellan 1 och 3 inklusive |
endOfLifeDate |
Ett framtida slutdatum för programversionen. Observera att detta endast gäller kundreferens och inte tillämpas. |
Giltigt framtida datum |
excludeFromLatest |
Om den här versionen anges kommer den inte att beaktas för den senaste versionen. |
Sant eller falskt |
Om du vill lägga till en vm-programversion till en virtuell dator utför du en PUT på den virtuella datorn.
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}"
}
Så här tillämpar du det virtuella datorprogrammet på en enhetlig skalningsuppsättning:
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}"
}
Fältnamn |
beskrivning |
Begränsningar |
order |
Valfritt. I vilken ordning programmen ska distribueras. Se nedan. |
Verifiera heltal |
packageReferenceId |
En referens till galleriprogramversionen |
Giltig referens för programversion |
configurationReference |
Valfritt. Den fullständiga URL:en för en lagringsblob som innehåller konfigurationen för den här distributionen. Detta åsidosätter alla värden som angavs för defaultConfiguration tidigare. |
Giltig lagringsblobreferens |
treatFailureAsDeploymentFailure |
Valfritt. Etableringsstatus för VM-appen. När värdet är falskt visas etableringsstatusen alltid "lyckades" oavsett appdistributionsfel. |
Sant eller Falskt |
Orderfältet kan användas för att ange beroenden mellan program. Reglerna för ordning är följande:
Skiftläge |
Installera mening |
Fel menande |
Ingen order har angetts |
Osorterade program installeras efter sorterade program. Det finns ingen garanti för installationsordning bland de osorterade programmen. |
Installationsfel för andra program, oavsett om de är ordnade eller osorterade, påverkar inte installationen av osorterade program. |
Duplicerade ordervärden |
Programmet installeras i valfri ordning jämfört med andra program med samma ordning. Alla program i samma ordning installeras efter dem med lägre order och före de med högre beställningar. |
Om det inte gick att installera ett tidigare program med lägre ordning, så finns det inga program med den här beställningsinstallationen. Om det inte går att installera något program med den här ordningen kan inga program med högre ordning installeras. |
Öka order |
Programmet installeras efter dem med lägre order och före de med högre beställningar. |
Om det inte gick att installera ett tidigare program med lägre ordning installeras inte det här programmet. Om det här programmet inte kan installeras finns det inget program med högre ordning. |
Svaret innehåller den fullständiga VM-modellen. Följande är relevanta delar.
{
"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=}"
}
]
}
Om de virtuella datorprogrammen ännu inte har installerats på den virtuella datorn är värdet tomt.
Så här hämtar du resultatet av vm-instansvyn:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/virtualMachines/\<**VMName**\>/instanceView?api-version=2019-03-01
Resultatet ser ut så här:
{
...
"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}
"
}
]
}
...
]
}
Statusen för den virtuella datorns app finns i statusmeddelandet för resultatet av vm-apptillägget i instansvyn.
Så här hämtar du status för ett VMSS-program:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/ virtualMachineScaleSets/\<**VMSSName**\>/virtualMachines/<**instanceId**>/instanceView?api-version=2019-03-01
Utdata liknar exemplet på den virtuella datorn tidigare.