VM-toepassingen zijn een resourcetype in de Azure Compute Gallery (voorheen shared Image Gallery genoemd) dat het beheer, het delen en de wereldwijde distributie van toepassingen voor uw virtuele machines vereenvoudigt.
Zorg ervoor dat het opslagaccount openbare toegang heeft of gebruik een SAS-URI met leesbevoegdheden, omdat andere beperkingsniveaus mislukken bij implementaties. U kunt Storage Explorer gebruiken om snel een SAS-URI te maken als u er nog geen hebt.
Als u PowerShell gebruikt, moet u versie 3.11.0 van de Az.Storage-module gebruiken.
Kies hieronder een optie voor het maken van de definitie en versie van uw VM-toepassing:
- Ga naar Azure Portal en zoek en selecteer Azure Compute Gallery.
- Selecteer de galerie die u wilt gebruiken in de lijst.
- Selecteer Op de pagina voor uw galerie de optie Toevoegen boven aan de pagina en selecteer vervolgens de definitie van de VM-toepassing in de vervolgkeuzelijst. De pagina Een vm-toepassingsdefinitie maken wordt geopend.
- Voer op het tabblad Basisbeginselen een naam in voor uw toepassing en kies of de toepassing is voor virtuele machines waarop Linux of Windows wordt uitgevoerd.
- Selecteer het tabblad Publicatieopties als u een van de volgende optionele instellingen voor uw VM-toepassingsdefinitie wilt opgeven:
- Een beschrijving van de definitie van de VM-toepassing.
- Datum einde levensduur
- Koppeling naar een Eula
- URI van een privacyverklaring
- URI voor releaseopmerkingen
- Selecteer als u klaar bent de optie Beoordelen en maken.
- Wanneer de validatie is voltooid, selecteert u Maken om de definitie te laten implementeren.
- Zodra de implementatie is voltooid, selecteert u Ga naar de resource.
- Selecteer op de pagina voor de toepassing de optie Een vm-toepassingsversie maken. De pagina Een VM-toepassingsversie maken wordt geopend.
- Voer een versienummer in, zoals 1.0.0.
- Selecteer de regio waar u uw toepassingspakket hebt geüpload.
- Selecteer Bladeren onder Brontoepassingspakket. Selecteer het opslagaccount en vervolgens de container waarin het pakket zich bevindt. Selecteer het pakket in de lijst en selecteer vervolgens Selecteren wanneer u klaar bent. U kunt ook de SAS-URI in dit veld plakken, indien gewenst.
- Typ het installatiescript. U kunt ook het script verwijderen en het updatescript opgeven. Zie het overzicht voor informatie over het maken van de scripts.
- Als u een standaardconfiguratiebestand hebt geüpload naar een opslagaccount, kunt u dit selecteren in de standaardconfiguratie.
- Selecteer Uitsluiten als u niet wilt dat deze versie wordt weergegeven als de nieuwste versie wanneer u een virtuele machine maakt.
- Kies voor de einddatum van de levensduur een datum in de toekomst om bij te houden wanneer deze versie buiten gebruik moet worden gesteld. Het wordt niet automatisch verwijderd of verwijderd, alleen voor uw eigen tracering.
- Als u deze versie naar andere regio's wilt repliceren, selecteert u het tabblad Replicatie en voegt u meer regio's toe en wijzigt u het aantal replica's per regio. De oorspronkelijke regio waarin uw versie is gemaakt, moet zich in de lijst bevinden en kan niet worden verwijderd.
- Wanneer u klaar bent met het aanbrengen van wijzigingen, selecteert u Controleren en maken onderaan de pagina.
- Wanneer de validatie wordt weergegeven als geslaagd, selecteert u Maken om de versie van uw VM-toepassing te implementeren.
U kunt nu een VIRTUELE machine maken en de VM-toepassing hierop implementeren met behulp van de portal. Maak gewoon de VIRTUELE machine zoals gebruikelijk en kies op het tabblad Geavanceerd een VM-toepassing selecteren die u wilt installeren.
Selecteer de VM-toepassing in de lijst en selecteer opslaan onder aan de pagina.
Als u meerdere VM-toepassingen wilt installeren, kunt u de installatievolgorde instellen voor elke VM-toepassing op het tabblad Geavanceerd.
U kunt de VM-toepassing ook implementeren op vm's die momenteel worden uitgevoerd. Selecteer de optie Extensies en toepassingen onder Instellingen in het linkermenu bij het weergeven van de VM-details in de portal.
Kies VM-toepassingen en selecteer vervolgens Toepassing toevoegen om uw VM-toepassing toe te voegen.
Selecteer de VM-toepassing in de lijst en selecteer opslaan onder aan de pagina.
Als u de status van de VM-toepassing wilt weergeven, gaat u naar het tabblad Extensies en toepassingen en controleert u de status van de VMAppExtension:
Als u de status van de VM-toepassing voor VMSS wilt weergeven, gaat u naar de pagina VMSS, exemplaren, selecteert u een van deze exemplaren en gaat u vervolgens naar VMAppExtension:
VOOR VM-toepassingen is Azure CLI versie 2.30.0 of hoger vereist.
Maak de definitie van de VM-toepassing met behulp van az sig gallery-application create. In dit voorbeeld maken we een VM-toepassingsdefinitie met de naam myApp voor op Linux gebaseerde VM's.
az sig gallery-application create \
--application-name myApp \
--gallery-name myGallery \
--resource-group myResourceGroup \
--os-type Linux \
--location "East US"
Maak een VM-toepassingsversie met az sig gallery-application version create. Toegestane tekens voor versie zijn getallen en punten. Cijfers moeten binnen het bereik van een 32-bits geheel getal zijn. Indeling: MajorVersion.MinorVersion.Patch.
Vervang de waarden van de parameters door uw eigen waarden.
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>"\
Stel een VM-toepassing in op een bestaande VM met az vm application set en vervang de waarden van de parameters door uw eigen waarden.
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
Voor het instellen van meerdere toepassingen op een VIRTUELE machine:
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
Als u een toepassing wilt toevoegen aan een VMSS, gebruikt u 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
Meerdere toepassingen toevoegen aan een 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
Als u de implementatiestatus van de toepassings-VM wilt controleren, gebruikt u az vm get-instance-view:
az vm get-instance-view -g myResourceGroup -n myVM --query "instanceView.extensions[?name == 'VMAppExtension']"
Gebruik az vmss get-instance-view om de implementatiestatus van de toepassing VMSS te controleren:
az vmss get-instance-view --ids (az vmss list-instances -g myResourceGroup -n myVmss --query "[*].id" -o tsv) --query "[*].extensions[?name == 'VMAppExtension']"
Notitie
Met de bovenstaande opdracht vmSS-implementatiestatus wordt de exemplaar-id niet weergegeven met het resultaat. Als u de exemplaar-id wilt weergeven met de status van de extensie in elk exemplaar, is extra scripting vereist. Raadpleeg het onderstaande VMSS CLI-voorbeeld met de PowerShell-syntaxis:
$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']"
}
Maak de definitie van de VM-toepassing met behulp van New-AzGalleryApplication
. In dit voorbeeld maken we een Linux-app met de naam myApp in de myGallery Azure Compute Gallery, in de resourcegroep myGallery en heb ik een korte beschrijving gegeven van de VM-toepassing voor eigen gebruik. Vervang de waarden indien nodig.
$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."
Maak een versie van uw toepassing met behulp van New-AzGalleryApplicationVersion
. Toegestane tekens voor versie zijn getallen en punten. Cijfers moeten binnen het bereik van een 32-bits geheel getal zijn. Indeling: MajorVersion.MinorVersion.Patch.
In dit voorbeeld maken we versienummer 1.0.0. Vervang indien nodig de waarden van de variabelen.
$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" `
Als u de toepassing wilt toevoegen aan een bestaande VM, haalt u de toepassingsversie op en gebruikt u deze om de versie-id van de VM-toepassing op te halen. Gebruik de id om de toepassing toe te voegen aan de VM-configuratie.
$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
De toepassing toevoegen aan een 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
Controleer of de toepassing is geslaagd:
$rgName = "myResourceGroup"
$vmName = "myVM"
$result = Get-AzVM -ResourceGroupName $rgName -VMName $vmName -Status
$result.Extensions | Where-Object {$_.Name -eq "VMAppExtension"} | ConvertTo-Json
Controleren op 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
Maak de toepassingsdefinitie.
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"
}
}
Veldnaam |
Beschrijving |
Beperkingen |
naam |
Een unieke naam voor de VM-toepassing in de galerie |
Maximale lengte van 117 tekens. Toegestane tekens zijn hoofdletters of kleine letters, cijfers, afbreekstreepjes(-), punt (.), onderstrepingsteken (_). Namen mogen niet eindigen met punt(.). |
supportedOSType |
Of dit nu een Windows- of Linux-toepassing is |
"Windows" of "Linux" |
endOfLifeDate |
Een toekomstige einddatum van de levensduur voor de toepassing. Let op: dit is alleen ter referentie en wordt niet afgedwongen. |
Geldige datum in de toekomst |
Maak een vm-toepassingsversie.
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"
}
}
Veldnaam |
Beschrijving |
Beperkingen |
locatie |
Bronlocatie voor de versie van de VM-toepassing |
Geldige Azure-regio |
mediaLink |
De URL met het toepassingsversiepakket |
Geldige en bestaande opslag-URL |
defaultConfigurationLink |
Optioneel. De URL met de standaardconfiguratie, die tijdens de implementatie kan worden overschreven. |
Geldige en bestaande opslag-URL |
Installeren |
De opdracht voor het installeren van de toepassing |
Geldige opdracht voor het opgegeven besturingssysteem |
Verwijderen |
De opdracht om de toepassing te verwijderen |
Geldige opdracht voor het opgegeven besturingssysteem |
Bijwerken |
Optioneel. De opdracht om de toepassing bij te werken. Als dit niet is opgegeven en er een update is vereist, wordt de oude versie verwijderd en wordt de nieuwe versie geïnstalleerd. |
Geldige opdracht voor het opgegeven besturingssysteem |
targetRegions/name |
De naam van een regio waarnaar moet worden gerepliceerd |
Azure-regio valideren |
targetRegions/regionalReplicaCount |
Optioneel. Het aantal replica's in de regio dat moet worden gemaakt. Standaardwaarde is 1. |
Geheel getal tussen 1 en 3 inclusief |
endOfLifeDate |
Een toekomstige einddatum voor de toepassingsversie. Houd er rekening mee dat dit alleen geldt voor klantreferenties en niet wordt afgedwongen. |
Geldige datum in de toekomst |
excludeFromLatest |
Indien opgegeven, wordt deze versie niet in aanmerking genomen voor de meest recente versie. |
Waar of niet waar |
Als u een versie van een VM-toepassing wilt toevoegen aan een virtuele machine, voert u een PUT uit op de VIRTUELE machine.
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}"
}
De VM-toepassing toepassen op een uniforme schaalset:
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}"
}
Veldnaam |
Beschrijving |
Beperkingen |
order |
Optioneel. De volgorde waarin de toepassingen moeten worden geïmplementeerd. Zie hieronder. |
Geheel getal valideren |
packageReferenceId |
Een verwijzing naar de versie van de galerietoepassing |
Geldige referentie voor toepassingsversie |
configurationReference |
Optioneel. De volledige URL van een opslagblob die de configuratie voor deze implementatie bevat. Hiermee wordt elke waarde die eerder is opgegeven voor defaultConfiguration overschreven. |
Geldige naslaginformatie voor opslagblob |
treatFailureAsDeploymentFailure |
Optioneel. Inrichtingsstatus voor VM-app. Als deze optie is ingesteld op onwaar, wordt de inrichtingsstatus altijd 'geslaagd' weergegeven, ongeacht de mislukte app-implementatie. |
True of False |
Het orderveld kan worden gebruikt om afhankelijkheden tussen toepassingen op te geven. De regels voor volgorde zijn:
Case |
Betekenis van installatie |
Fout betekenis |
Er is geen order opgegeven |
Niet-geordende toepassingen worden geïnstalleerd na geordende toepassingen. Er is geen garantie voor de installatieorder onder de niet-geordende toepassingen. |
Installatiefouten van andere toepassingen, of het nu geordende of ongeordend is, heeft geen invloed op de installatie van niet-geordende toepassingen. |
Dubbele volgordewaarden |
De toepassing wordt in elke volgorde geïnstalleerd in vergelijking met andere toepassingen met dezelfde volgorde. Alle toepassingen van dezelfde bestelling worden geïnstalleerd na de toepassingen met lagere orders en vóór de toepassingen met hogere orders. |
Als een eerdere toepassing met een lagere volgorde niet kan worden geïnstalleerd, worden er geen toepassingen met deze bestelling geïnstalleerd. Als een toepassing met deze bestelling niet kan worden geïnstalleerd, worden er geen toepassingen met een hogere volgorde geïnstalleerd. |
Toenemende orders |
De toepassing wordt geïnstalleerd na degenen met lagere orders en vóór degenen met hogere orders. |
Als een vorige toepassing met een lagere volgorde niet kan worden geïnstalleerd, wordt deze toepassing niet geïnstalleerd. Als deze toepassing niet kan worden geïnstalleerd, wordt er geen toepassing met een hogere volgorde geïnstalleerd. |
Het antwoord bevat het volledige VM-model. Hier volgen de relevante onderdelen.
{
"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=}"
}
]
}
Als de VM-toepassingen nog niet op de VIRTUELE machine zijn geïnstalleerd, is de waarde leeg.
Het resultaat van de vm-exemplaarweergave ophalen:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/virtualMachines/\<**VMName**\>/instanceView?api-version=2019-03-01
Het resultaat ziet er als volgt uit:
{
...
"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}
"
}
]
}
...
]
}
De status van de VM-app staat in het statusbericht van het resultaat van de VM-app-extensie in de instantieweergave.
De status voor een VMSS-toepassing ophalen:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/ virtualMachineScaleSets/\<**VMSSName**\>/virtualMachines/<**instanceId**>/instanceView?api-version=2019-03-01
De uitvoer is vergelijkbaar met het VM-voorbeeld eerder.