Este artigo fala sobre como monitorar, atualizar e excluir o aplicativo de VM publicado e o recurso de aplicativo de VM implantado na VM (Máquina Virtual) do Azure ou conjuntos de dimensionamento de máquinas virtuais.
Para exibir as propriedades de um aplicativo de VM publicado no portal do Azure:
- Entre no portal do Azure.
- Pesquise pela Galeria de Computação do Azure.
- Selecione a galeria que contém seu Aplicativo de VM.
- Clique no Nome do Aplicativo da VM que você deseja exibir.
- A folha Visão Geral/Propriedades exibe informações sobre o Aplicativo de VM.
- A folha Visão Geral/Versões exibe todas as versões publicadas e suas propriedades básicas, como regiões de destino, estado de provisionamento e estado de replicação.
- Selecione uma versão específica para exibir todos os seus detalhes.
Exiba as propriedades de um aplicativo de VM publicado ou uma versão específica usando a API REST:
Obter detalhes do aplicativo de VM:
GET
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{galleryApplicationName}?api-version=2024-03-03
Resposta de exemplo:
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{galleryApplicationName}",
"name": "{galleryApplicationName}",
"type": "Microsoft.Compute/galleries/applications",
"___location": "eastus",
"properties": {
"description": "Sample VM Application",
"provisioningState": "Succeeded",
"supportedOSTypes": ["Windows", "Linux"],
"endOfLifeDate": null,
"privacyStatementUri": "https://contoso.com/privacy",
"releaseNoteUri": "https://contoso.com/release-notes"
}
}
Obter detalhes da versão do aplicativo VM:
GET
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{galleryApplicationName}/versions/{galleryApplicationVersionName}?api-version=2024-03-03
Resposta de exemplo:
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{galleryApplicationName}/versions/{galleryApplicationVersionName}",
"name": "{galleryApplicationVersionName}",
"type": "Microsoft.Compute/galleries/applications/versions",
"___location": "eastus",
"properties": {
"provisioningState": "Succeeded",
"publishingProfile": {
"source": {
"mediaLink": "https://storageaccount.blob.core.windows.net/vmapps/app.zip"
},
"replicaCount": 1,
"targetRegions": [
{
"name": "eastus",
"regionalReplicaCount": 1
}
]
},
"storageAccountType": "Standard_LRS"
}
}
As respostas incluem propriedades como nome, local, estado de provisionamento, descrição e outros metadados sobre o aplicativo ou a versão.
Definir variáveis:
rgName="myResourceGroup"
galleryName="myGallery"
appName="myVmApp"
versionName="1.0.0"
Listar todos os aplicativos de VM na galeria:
az sig gallery-application list \
--resource-group $rgName \
--gallery-name $galleryName \
-o table
Mostrar as propriedades de um aplicativo de VM:
az sig gallery-application show \
--resource-group $rgName \
--gallery-name $galleryName \
--application-name $appName
Listar todas as versões de um aplicativo de VM:
az sig gallery-application version list \
--resource-group $rgName \
--gallery-name $galleryName \
--application-name $appName \
--query "[].{version:name, provisioningState:properties.provisioningState}" -o table
Mostrar as propriedades de uma versão específica do aplicativo de VM:
az sig gallery-application version show \
--resource-group $rgName \
--gallery-name $galleryName \
--application-name $appName \
--version-name $versionName
Use o Azure PowerShell para exibir os detalhes do aplicativo de VM e da versão em uma Galeria de Computação do Azure.
Definir variáveis:
$rgName = "myResourceGroup"
$galleryName = "myGallery"
$appName = "myVmApp"
$versionName = "1.0.0"
Listar todos os aplicativos de VM na galeria:
Get-AzGalleryApplication `
-ResourceGroupName $rgName `
-GalleryName $galleryName |
Select-Object Name, Location, ProvisioningState
Mostrar as propriedades de um aplicativo de VM:
Get-AzGalleryApplication `
-ResourceGroupName $rgName `
-GalleryName $galleryName `
-Name $appName |
ConvertTo-Json -Depth 5
Listar todas as versões de um aplicativo de VM:
Get-AzGalleryApplicationVersion `
-ResourceGroupName $rgName `
-GalleryName $galleryName `
-GalleryApplicationName $appName |
Select-Object Name, @{n="ProvisioningState";e={$_.ProvisioningState}}
Mostrar as propriedades de uma versão específica do aplicativo de VM:
Get-AzGalleryApplicationVersion `
-ResourceGroupName $rgName `
-GalleryName $galleryName `
-GalleryApplicationName $appName `
-Name $versionName |
ConvertTo-Json -Depth 6
Para mostrar o status do aplicativo VM, acesse a guia Extensões + aplicativos /configurações e verifique o status da VMAppExtension:
Para mostrar o status do aplicativo de VM para um conjunto de dimensionamento, acesse a página Conjuntos de Dimensionamento de Máquinas Virtuais do portal do Azure. Na seção Instâncias, selecione um dos conjuntos de dimensionamento listados e vá para VMAppExtension:
Se o aplicativo de VM não estiver instalado na VM, o valor estará vazio.
Para obter o resultado da exibição da instância da VM:
GET
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VMName}/instanceView?api-version=2024-03-03
O resultado tem esta aparência:
{
...
"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}
"
}
]
}
...
]
}
O status do aplicativo de VM está na mensagem de status do resultado da extensão de aplicativo de VM no modo de exibição da instância.
Para obter o status do aplicativo no Conjunto de Dimensionamento de Máquinas Virtuais:
GET
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/ virtualMachineScaleSets/{VMSSName}/virtualMachines/{instanceId}/instanceView?api-version=2019-03-01
A saída é semelhante ao exemplo de VM anteriormente.
Para verificar o status da implantação do aplicativo em uma VM, use 'az vm get-instance-view':
az vm get-instance-view -g myResourceGroup -n myVM --query "instanceView.extensions[?name == 'VMAppExtension']"
Para verificar o status da implantação do aplicativo no Conjunto de Dimensionamento de Máquinas Virtuais, use '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']"
Observação
O comando de status de implantação anterior dos Conjuntos de Dimensionamento de Máquinas Virtuais não lista a ID da instância com o resultado. Para mostrar a ID da instância com o status da extensão em cada instância, mais scripts são necessários. Consulte o exemplo da CLI a seguir que contém a sintaxe do 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']"
}
Verifique se o aplicativo foi bem-sucedido:
$rgName = "myResourceGroup"
$vmName = "myVM"
$result = Get-AzVM -ResourceGroupName $rgName -VMName $vmName -Status
$result.Extensions | Where-Object {$_.Name -eq "VMAppExtension"} | ConvertTo-Json
Para verificar em seu Conjunto de Dimensionamento de Máquinas Virtuais:
$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
- Abra o portal do Azure e acesse a VM (máquina virtual) de destino ou o Conjunto de Dimensionamento de Máquinas Virtuais.
- Em Configurações, selecione Extensões + aplicativos e, em seguida, selecione a guia Aplicativos de VM .
- Clique no botão Desinstalar no Aplicativo da VM e salvar.
- Acompanhe o progresso em Notificações ou verifique o modo de exibição instância para o status VMAppExtension.
Para remover um aplicativo de VM, atualize-o applicationProfile desmarcando ou excluindo o aplicativo de destino.
Remova de uma única VM:
PATCH
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}?api-version=2024-03-03
Body
{
"properties": {
"applicationProfile": {
"galleryApplications": []
}
}
}
Remover de um conjunto de dimensionamento de VM (modelo):
PATCH
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmssName}?api-version=2024-03-03
Body
{
"properties": {
"virtualMachineProfile": {
"applicationProfile": {
"galleryApplications": []
}
}
}
}
Aplique a alteração a instâncias VMSS existentes (necessária quando upgradePolicy.mode for Manual):
POST
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmssName}/updateInstances?api-version=2024-03-03
Body
{
"instanceIds": ["0", "1"]
}
Remova de uma única VM:
az vm update -g myResourceGroup -n myVM --set "properties.applicationProfile.galleryApplications=[]"
Remover de um conjunto de dimensionamento de VM (modelo):
az vmss update -g myResourceGroup -n myVMss --set "virtualMachineProfile.applicationProfile.galleryApplications=[]"
Aplique a alteração a instâncias VMSS existentes (política de atualização manual):
az vmss update-instances -g myResourceGroup -n myVMss --instance-ids "*"
Remova de uma única VM:
$rgName = "myResourceGroup"
$vmName = "myVM"
$vm = Get-AzVM -ResourceGroupName $rgName -Name $vmName
$vm.ApplicationProfile.GalleryApplications = @()
Update-AzVM -ResourceGroupName $rgName -VM $vm
Remova de um conjunto de dimensionamento de VMs (modelo) e aplique a instâncias:
$rgName = "myResourceGroup"
$vmssName = "myVMss"
$vmss = Get-AzVmss -ResourceGroupName $rgName -VMScaleSetName $vmssName
$vmss.VirtualMachineProfile.ApplicationProfile.GalleryApplications = @()
Update-AzVmss -ResourceGroupName $rgName -VMScaleSetName $vmssName -VirtualMachineScaleSet $vmss
$instanceIds = (Get-AzVmssVM -ResourceGroupName $rgName -VMScaleSetName $vmssName).InstanceId
Update-AzVmssInstance -ResourceGroupName $rgName -VMScaleSetName $vmssName -InstanceId $instanceIds
Para excluir o recurso aplicativo de VM, primeiro você precisa excluir todas as suas versões. A exclusão da versão do aplicativo causa a exclusão do recurso de versão do aplicativo da Galeria de Computação do Azure e de todas as suas réplicas. O blob do aplicativo na Conta de Armazenamento usado para criar a versão do aplicativo não é afetado.
- Entre no portal do Azure.
- Pesquise a Galeria de Computação do Azure e abra a galeria de destino.
- Selecione o aplicativo de VM que você deseja remover.
- Selecione uma ou mais versões, que você deseja excluir.
- Para excluir o aplicativo de VM, primeiro exclua todas as versões. Em seguida, clique em excluir (na parte superior da folha).
- Monitore as notificações para conclusão. Se a exclusão for bloqueada, remova todos os bloqueios e verifique se nenhuma VM ou conjunto de dimensionamento referencia o aplicativo.
Exclua a versão do aplicativo VM:
DELETE
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{galleryApplicationName}/versions/{galleryApplicationVersionName}?api-version=2024-03-03
Exclua o aplicativo de VM depois que todas as suas versões forem excluídas:
DELETE
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{galleryApplicationName}?api-version=2024-03-03
Exclua a versão do aplicativo VM:
az sig gallery-application version delete --resource-group $rg-name --gallery-name $gallery-name --application-name $app-name --version-name $version-name
Exclua o aplicativo de VM depois que todas as suas versões forem excluídas:
az sig gallery-application delete --resource-group $rg-name --gallery-name $gallery-name --application-name $app-name
Exclua a versão do aplicativo VM:
Remove-AzGalleryApplicationVersion -ResourceGroupName $rgNmae -GalleryName $galleryName -GalleryApplicationName $galleryApplicationName -Name $name
Exclua o aplicativo de VM depois que todas as suas versões forem excluídas:
Remove-AzGalleryApplication -ResourceGroupName $rgNmae -GalleryName $galleryName -Name $name