O que é nested virtualization?
O nested virtualization é um recurso que permite executar o Hyper-V em uma VM (máquina virtual) do Hyper-V.
O nested nested virtualization tem suporte em várias famílias de máquinas virtuais do Azure. Essa funcionalidade proporciona uma grande flexibilidade no suporte a cenários como ambientes de desenvolvimento, teste, treinamento e demonstração.
Tamanhos de VM do Azure que oferecem suporte à nested virtualization
Os tamanhos de VM mencionados acima são os atuais que oferecem suporte ao Nesting. Sempre fique de olho nas próximas atualizações/mudanças aqui .
Crie uma VM do Azure com capacidade de aninhamento
Crie uma nova VM do Windows Server 2016 Azure. Para obter uma lista completa de tamanhos de máquinas virtuais que oferecem suporte ao aninhamento, consulte o artigo da Unidade de computação do Azure .
Lembre-se de escolher um tamanho de VM grande o suficiente para suportar as demandas de uma máquina virtual convidada. Neste exemplo, estamos usando uma VM do Azure de tamanho D4_v3.
Criar Máquina virtual no Azure
01 – O script abaixo cria uma máquina virtual localizada no EastUS do tipo Standard_D4s_v3 com 4 vcpus e 16 GB de RAM.
# Definindo as variáveis de rede
$ResourceGroup = “RG-homologação-jadsonalves”
$Location = “EastUS”
$vNetName = “vnet-dev-eus-contoso”
$AddressSpace = “10.0.0.0/16”
$SubnetIPRange = “10.0.0.0/24”
$SubnetName = “subnet-dev-eus-contoso”
$nsgName = “nsg-dev-eus-contoso”
# Criando o Resource Groups
New-AzResourceGroup -Name $ResourceGroup -Location $Location
# Criando a Virtual Network
$vNetwork = New-AzVirtualNetwork -ResourceGroupName $ResourceGroup -Name $vNetName -AddressPrefix $AddressSpace -Location $location
# Criando a Subnet
Add-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $vNetwork -AddressPrefix $SubnetIPRange
# Setando as configurações
Set-AzVirtualNetwork -VirtualNetwork $vNetwork
# Criando o Network Security Group
$nsgRuleVMAccess = New-AzNetworkSecurityRuleConfig -Name ‘allow-vm-access’ -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389,443,80 -Access Allow
New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Location $location -Name $nsgName -SecurityRules $nsgRuleVMAccess
# Definindo as variáveis da máquina virtual
$vNet = Get-AzVirtualNetwork -ResourceGroupName $ResourceGroup -Name $vNetName
$Subnet = Get-AzVirtualNetworkSubnetConfig -Name $SubnetName -VirtualNetwork $vNet
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NsgName
$vmName = “dev-VM001”
$pubName = “MicrosoftWindowsServer”
$offerName = “WindowsServer”
$skuName = “2016-Datacenter”
$vmSize = “Standard_D4s_v3”
$pipName = “$vmName-pip”
$nicName = “$vmName-nic”
$osDiskName = “$vmName-OsDisk”
$osDiskType = “Standard_LRS”
# Definindo as credenciais de administrador
$adminUsername = ‘jadson.alves’
$adminPassword = ‘Pa$$w0rd.qwe1234’
$pw = ConvertTo-SecureString $adminPassword -AsPlainText -Force
$adminCreds = New-Object System.Management.Automation.PSCredential (“$adminUsername”, $pw)
# Criando IP público e interface de rede NIC
$pip = New-AzPublicIpAddress -Name $pipName -ResourceGroupName $ResourceGroup -Location $location -AllocationMethod Static
$nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $ResourceGroup -Location $location ` -SubnetId $Subnet.Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
# Adicionando as configurações da máquina virtual
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize
Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id
# Setando os parâmetros do sistema operacional
Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $adminCreds
# Setando a imagem utilizada na máquina virtual
Set-AzVMSourceImage -VM $vmConfig -PublisherName $pubName -Offer $offerName -Skus $skuName -Version ‘latest’
# Setando as configurações de disco
Set-AzVMOSDisk -VM $vmConfig -Name $osDiskName -StorageAccountType $osDiskType -CreateOption fromImage
# Criando a máquina virtual
New-AzVM -ResourceGroupName $ResourceGroup -Location $location -VM $vmConfig
Habilitar a feature do Hyper-V na VM do Azure
Podemos habilitar a feature do Hyper-V na VM no azure, conectando da VM e executando os comandos sugeridos, ou podemos executar os scripts diretamente no portal que serão executados na VM automaticamente. Para nosso exemplo vamos instalar a feature do Hyper-V diretamente do portal do Azure.
02 – Selecione a máquina virtual que deseja habilitar a feature do Hyper-V, em Operations, clique em Run command.
03 – Na tela Run command, selecione RunPowerShellScript.
04 – Na tela RunPowerShellScript, execute o script abaixo para habilitar o recurso Hyper-V e ferramentas de gerenciamento, após digitar o script clique em Run.
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
07 – Como podemos observar na imagem abaixo a instalação da feature do Hyper-V foi finalizada e está nos informando que precisa reiniciar o servidor para finalizar a instalação.
06 – Nosso próximo passo será criar um switch de rede virtual do tipo interno.
New-VMSwitch -Name “VSwicth-Internal” -SwitchType Internal
Criar a máquina virtual convidada
No vídeo abaixo demostro como criar uma máquina virtual no Hyper-V dentro da VM no Azure.
07 – Conecte na máquina virtual no Azure utilizando RDP ou Bastion host.
08 – Em seguida crie uma máquina virtual no Hyper-V
Tem alguma sugestão ou observação, comente.
Comente suas sugestões e observações! Forte abraço, obrigado e até o próximo post.

Carreira desenvolvida na área de tecnologia da informação, com ampla experiência em Cloud
Computing e Cloud Security.
Forte atuação em projetos de Cloud Security no Microsoft Azure e com tecnologias de
segurança do Microsoft 365.
Tenho Experiência em Microsoft Azure, Microsoft 365, AWS e Windows Server.
Sou Microsoft MVP na categoria Microsoft Azure, AWS Communit Builder Security & Identity e
MCT.