Neste artigo, você pode encontrar as etapas para remover uma VM (máquina virtual) e suas dependências do Azure Stack Hub.
Se você remover uma VM do Azure Stack Hub, as dependências do componente; Ou seja, discos de dados, interfaces de rede virtual e contêineres de diagnóstico permanecem no grupo de recursos. Esses itens não serão excluídos automaticamente junto com o disco do sistema operacional. Siga as etapas neste artigo para remover as dependências de disco e componente do sistema operacional.
Ao criar uma nova VM, você normalmente cria um novo grupo de recursos e coloca todas as dependências nesse grupo de recursos. Quando você quiser excluir a VM e todas as suas dependências, poderá excluir o grupo de recursos. O Resource Manager do Azure exclui com êxito as dependências. Há momentos em que você não pode excluir o grupo de recursos para remover a VM; por exemplo, a VM pode conter recursos que não são dependências da VM que você deseja manter.
Você pode usar o portal do Azure ou o PowerShell para remover sua VM e suas dependências.
Se você não puder excluir o grupo de recursos, as dependências não estarão no mesmo grupo de recursos ou haverá outros recursos. Siga estas etapas:
- Abra o portal do usuário do Azure Stack.
- Selecione Máquinas virtuais. Localize sua máquina virtual e selecione sua máquina para abrir a folha Máquina virtual.
- Anote o grupo de recursos que contém as dependências da VM e da VM.
- Selecione Rede e anote o adaptador de rede.
- Selecione Discos e anote o disco do sistema operacional e os discos de dados.
- Volte para a folha Máquina virtual e selecione Excluir.
- Digite sim para confirmar a exclusão e selecione Excluir.
- Selecione Grupos de recursos e, em seguida, selecione o grupo de recursos.
- Exclua as dependências selecionando manualmente os itens que você anotou. Para cada item, selecione Excluir:
- Digite sim para confirmar a exclusão e selecione Excluir.
- Aguarde a exclusão completa do recurso.
- Em seguida, você pode excluir a próxima dependência.
Se você não puder excluir o grupo de recursos, as dependências não estarão no mesmo grupo de recursos ou haverá outros recursos. Siga as etapas nesta seção.
Conecte-se ao ambiente do Azure Stack Hub e atualize as variáveis a seguir com o nome da VM e o grupo de recursos. Para obter instruções sobre como conectar sua sessão do PowerShell ao Azure Stack Hub, consulte Conectar-se ao Azure Stack Hub com o PowerShell como usuário.
$machineName = 'VM_TO_DELETE'
$resGroupName = 'RESOURCE_GROUP'
$machine = Get-AzVM -Name $machineName -ResourceGroupName $resGroupName
Recupere as informações da VM e o nome das dependências. Na mesma sessão, execute os seguintes cmdlets:
$azResParams = @{
'ResourceName' = $machineName
'ResourceType' = 'Microsoft.Compute/virtualMachines'
'ResourceGroupName' = $resGroupName
}
$vmRes = Get-AzResource @azResParams
$vmId = $vmRes.Properties.VmId
Exclua o contêiner de armazenamento de diagnóstico de inicialização. Se o nome do computador for menor que 9 caracteres, altere o índice para o comprimento da cadeia de caracteres na subcadeia de caracteres ao criar a $diagContainer
variável.
Na mesma sessão, execute os seguintes cmdlets:
$container = [regex]::match($machine.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
$diagContainer = ('bootdiagnostics-{0}-{1}' -f $machine.Name.ToLower().Substring(0, 9), $vmId)
$containerRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $container }).ResourceGroupName
$storeParams = @{
'ResourceGroupName' = $containerRg
'Name' = $container }
Get-AzStorageAccount @storeParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainer } | Remove-AzStorageContainer -Force
Remova o adaptador de rede virtual:
$machine | Remove-AzNetworkInterface -Force
Exclua o disco do sistema operacional:
$osVhdUri = $machine.StorageProfile.OSDisk.Vhd.Uri
$osDiskConName = $osVhdUri.Split('/')[-2]
$osDiskStorageAcct = Get-AzStorageAccount | where { $_.StorageAccountName -eq $osVhdUri.Split('/')[2].Split('.')[0] }
$osDiskStorageAcct | Remove-AzStorageBlob -Container $osDiskConName -Blob $osVhdUri.Split('/')[-1] -Confirm:$true
Remova os discos de dados anexados à VM:
if ($machine.StorageProfile.DataDisks.Name.Count -gt 0)
{
Write-Verbose -Message 'Deleting disks...'
foreach ($uri in $machine.StorageProfile.DataDisks.Vhd.Uri )
{
$dataDiskStorageAcct = Get-AzStorageAccount | where { $_.StorageAccountName -eq $uri.Split('/')[2].Split('.')[0]
$dataDiskStorageAcct | Remove-AzStorageBlob -Container $uri.Split('/')[-2] -Blob $uri.Split('/')[-1] -ea Ignore -Confirm:$true
}
}
Por fim, exclua a VM. O cmdlet leva algum tempo para ser executado. Você pode auditar os componentes anexados à VM examinando o objeto VM no PowerShell. Para examinar o objeto, consulte a variável que contém o objeto VM. Digite $machine
.
Para excluir a VM, na mesma sessão, execute o seguinte comando:
$machine | Remove-AzVM -Force
Se você não puder excluir o grupo de recursos, as dependências não estarão no mesmo grupo de recursos ou haverá outros recursos. Siga as etapas nesta seção.
Conecte-se ao ambiente do Azure Stack Hub e atualize as variáveis a seguir com o nome da VM e o grupo de recursos. Para obter instruções sobre como conectar sua sessão do PowerShell ao Azure Stack Hub, consulte Conectar-se ao Azure Stack Hub com o PowerShell como usuário.
$machineName = 'VM_TO_DELETE'
$resGroupName = 'RESOURCE_GROUP'
$machine = Get-AzureRmVM -Name $machineName -ResourceGroupName $resGroupName
Recupere as informações da VM e o nome das dependências. Na mesma sessão, execute os seguintes cmdlets:
$azResParams = @{
'ResourceName' = $machineName
'ResourceType' = 'Microsoft.Compute/virtualMachines'
'ResourceGroupName' = $resGroupName
}
$vmRes = Get-AzureRmResource @azResParams
$vmId = $vmRes.Properties.VmId
Exclua o contêiner de armazenamento de diagnóstico de inicialização. Se o nome do computador for menor que 9 caracteres, altere o índice para o comprimento da cadeia de caracteres na subcadeia de caracteres ao criar a $diagContainer
variável.
Na mesma sessão, execute os seguintes cmdlets:
$container = [regex]::match($machine.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
$diagContainer = ('bootdiagnostics-{0}-{1}' -f $machine.Name.ToLower().Substring(0, 9), $vmId)
$containerRg = (Get-AzureRmStorageAccount | where { $_.StorageAccountName -eq $container }).ResourceGroupName
$storeParams = @{
'ResourceGroupName' = $containerRg
'Name' = $container }
Get-AzureRmStorageAccount @storeParams | Get-AzureStorageContainer | where { $_.Name-eq $diagContainer } | Remove-AzureStorageContainer -Force
Remova o adaptador de rede virtual:
$machine | Remove-AzureRmNetworkInterface -Force
Exclua o disco do sistema operacional:
$osVhdUri = $machine.StorageProfile.OSDisk.Vhd.Uri
$osDiskConName = $osVhdUri.Split('/')[-2]
$osDiskStorageAcct = Get-AzureRmStorageAccount | where { $_.StorageAccountName -eq $osVhdUri.Split('/')[2].Split('.')[0] }
$osDiskStorageAcct | Remove-AzureStorageBlob -Container $osDiskConName -Blob $osVhdUri.Split('/')[-1]
Remova os discos de dados anexados à VM:
if ($machine.DataDiskNames.Count -gt 0)
{
Write-Verbose -Message 'Deleting disks...'
foreach ($uri in $machine.StorageProfile.DataDisks.Vhd.Uri )
{
$dataDiskStorageAcct = Get-AzureRmStorageAccount -Name $uri.Split('/')[2].Split('.')[0]
$dataDiskStorageAcct | Remove-AzureStorageBlob -Container $uri.Split('/')[-2] -Blob $uri.Split('/')[-1] -ea Ignore
}
}
Por fim, exclua a VM. O cmdlet leva algum tempo para ser executado. Você pode auditar os componentes anexados à VM examinando o objeto VM no PowerShell. Para examinar o objeto, consulte a variável que contém o objeto VM. Digite $machine
.
Para excluir a VM, na mesma sessão, execute o seguinte comando:
$machine | Remove-AzureRmVM -Force