Como habilitar o nested virtualization em uma vm no Azure

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. 🙂

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *