Criando uma Virtual Machine a partir de uma imagem personalizada

No Post anterior vimos como capturar sua própria imagem, vide em: https://unascimento.wordpress.com/2017/09/08/capturando-sua-propria-imagem-de-virtual-machine-personalizada-sob-o-gerenciador-recursos-azure/

A imagem VM personalizada precisa ter sido capturada usando um provedor de recursos v2 Compute

As imagens de VM capturadas de um provedor de recursos de computação v1 (Microsoft.ClassicCompute) não podem ser usadas para criar máquinas virtuais usando o provedor de recursos computação v2 (Microsoft.Compute) ou o contrário.

A imagem VM personalizada precisa residir na mesma Storage Account que sua máquina virtual no momento da criação.

Temos duas formas, criar a VM a partir da imagem em um ambiente com recursos de infraestrutura já criados, neste caso usei este PowerShell abaixo, somente alterando as informações aonde quero que seja criado a VM e com quais recursos:

Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId xxxxxxxxxxxx
$storageAccountName = “StorageAccount”
$storageAccount = Get-AzureRmStorageAccount | ? StorageAccountName -EQ $storageAccountName
# —————————————
# Caminho da imagem (vhd) gerado no momento da preparação, criação do template.
$imageURI = “https://xxxxxxx.blob.core.windows.net/system/Microsoft.Compute/Images/template/template-osDisk.cdee39ce-a474-4303-b4f6-b3f8c949460b.vhd”
$rgName = “Resource_Group”
# VNET
$location = “East US” # Escolher região, manter a mesma do seu ambiente anteriormente criado
$vnetName = “VNET” # Sua rede criada
$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName Resource_Group -Name VNET # Seu Resource Group e VNET criada
# SubNet
$subnetNameApp = “SUBNET” # Sua subnet criada na VNET
$singleSubnet = Get-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $VNET -Name $subnetNameApp
# Nome do seu IP Externo da VM
$ipName = “IPEXT_VM”
#Utilizar se for usar a mesma rede, mantendo endereço ip externo
#$pip = $ipName
#Desabilitar linha abaixo para não criar outro IP Externo, vai dar conflito.
$pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location -AllocationMethod Dynamic
# Posteriormente se quiser, pode através do Portal alterar para IP estático
$nicName = “NIC” #Nome da sua interface de rede
$nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id
$nsgName = “NSG” #Nome do seu NSG criado, se criado
$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName $rgName -Name $vnetName
# Criando Virtual Machine
# Entrar com usuário e senha que irá ser criado localmente na VM para acesso ao Windows posteriormente
$cred = Get-Credential
# Nome da Storage Account aonde o VHD esta localizado
$storageAccName = “StorageAccount”
# Nome da VM que deseja criar.
$vmName = “VM_NOME”
$vmSize = “Standard_DS2_v2_Promo” # Size da VM , mais informações no link abaixo
# Referência VM sizes documentation for more information:
# https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/
# Computer name da VM (Windows), não no AZURE, no AZURE já foi escolhido acima
$computerName = “VM_NOME”
# Nome do disco de SO
$osDiskName = “myOsDisk-VM-NOME”
# Assign a SKU name. This example sets the SKU name as “Standard_LRS”
# Valid values for -SkuName are: Standard_LRS – locally redundant storage, Standard_ZRS – zone redundant
# storage, Standard_GRS – geo redundant storage, Standard_RAGRS – read access geo redundant storage,
# Premium_LRS – premium locally redundant storage.
# Premium_LRS
# Para sua storage que irá criar a VM
$skuName = “Premium_LRS”
# Get Storage account aonde a imagem esta criada
$storageAcc = Get-AzureRmStorageAccount -ResourceGroupName $rgName -AccountName $storageAccName
# Set Nome da VM e Size
$AVSET = Get-AzureRmAvailabilitySet -ResourceGroupName Resource_Group | where {$_.Name -eq “AVSET”} # Caso queira pode setar um Availability Set já criado.
$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetId $AVSET.Id
#Set the Windows operating system configuration e adiciona a NIC
$vm = Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $computerName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id
# Create the OS disk URI
$osDiskUri = ‘{0}vhds/{1}-{2}.vhd’ -f $storageAcc.PrimaryEndpoints.Blob.ToString(), $vmName.ToLower(), $osDiskName
# Criando o disco de SO a partir da imagem existente (VHD Image) / -CreateOption fromImage).
$vm = Set-AzureRmVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption fromImage -SourceImageUri $imageURI -Windows
# Criando a NOVA VM
New-AzureRmVM -ResourceGroupName $rgName -Location $location -VM $vm
$vmList = Get-AzureRmVM -ResourceGroupName $rgName
$vmList.Name

Pronto, com este PowerShell já pode criar uma VM a partir de uma imagem antes gerada e localizada num Storage Account.

Outro modo é usar este PowerShell abaixo completo do qual disponibilizo também:

Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId $subscriptionId
$storageAccount = Get-AzureRmStorageAccount | ? StorageAccountName -EQ $storageAccountName
Criamos os recursos de rede para a VM
# Create the VNET
$vnetDef = New-AzureRmVirtualNetwork -ResourceGroupName $resourceGroupName -Location $location -Name $vnetName -AddressPrefix ‘10.0.0.0/16’
$vnet = $vnetDef | Add-AzureRmVirtualNetworkSubnetConfig -Name ‘Subnet-1’ -AddressPrefix ‘10.0.0.0/24’ | Set-AzureRmVirtualNetwork
# Create the NIC
$pip = New-AzureRmPublicIpAddress -ResourceGroupName $resourceGroupName -Location $location -Name $ipName -DomainNameLabel $domName -AllocationMethod Dynamic
$nic = New-AzureRmNetworkInterface -ResourceGroupName $resourceGroupName -Location $location -Name $nicName -PublicIpAddressId $pip.Id -SubnetId $vnet.Subnets[0].Id
Agora, podemos criar a configuração da VM e colar tudo em conjunto. Preste especial atenção ao -SourceImageUriparâmetro do Set-AzureRmVMOSDiskcmdlet, é aqui que especificamos a localização da imagem de VM personalizada para usar.
# Specify the VM name and size
$vm = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize
# Specify local administrator account, and then add the NIC
$cred = New-Object PSCredential $adminUsername, ($adminPassword | ConvertTo-SecureString -AsPlainText -Force) # you could use Get-Credential instead to get prompted
# NOTE: if you are deploying a Linux machine, replace the -Windows switch with the -Linux switch and remove the -EnableAutoUpdate switch.
$vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id
# Specify the OS disk
$diskName = ‘osdisk’
$osDiskUri = ‘{0}vhds/{1}{2}.vhd’ -f $storageAccount.PrimaryEndpoints.Blob.ToString(), $vmName.ToLower(), $diskName
# NOTE: if you are deploying a Linux machine, replace the -Windows switch with a -Linux switch.
$vm = Set-AzureRmVMOSDisk -VM $vm -Name $diskName -VhdUri $osDiskUri -CreateOption fromImage -SourceImageUri $sourceImageUri -Windows
$result = New-AzureRmVM -ResourceGroupName $resourceGroupName -Location $location -VM $vm
Script de exemplo
Aqui está um script básico mas completo, sem muita manipulação de erros para reduzir a complexidade … Por favor, note que este script implanta uma máquina do Windows, substitua a -Windowsopção para -Linuxalternar nos Set-AzureRmVMOperatingSystem& Set-AzureRmVMOSDiskcmdlets se desejar implantar uma máquina Linux.
# We’ll use a couple of variable here, fill these with your own values
$subscriptionId = ” # Your SubscriptionId
$storageAccountName = ” # Storage account name where your custom image is and where your VM vhd will go
$sourceImageUri = ” # custom VM image blob uri, ex: ‘https://vmcapturetest.blob.core.windows.net/system/Microsoft.Compute/Images/mytemplates/template-osDisk.187d9455-535b-48b4-b10d-8370ec9bad42.vhd’
# end of custom variables
# Authenticate against Azure and cache subscription data
Login-AzureRmAccount
# Switch subscription
Select-AzureRmSubscription -SubscriptionId $subscriptionId
# Get the storage account
$storageAccount = Get-AzureRmStorageAccount | ? StorageAccountName -EQ $storageAccountName
if(-not $storageAccount) {
throw “Unable to find storage account ‘$storageAccountName’. Cannot continue.”
}
# Enable verbose output and stop on error
$VerbosePreference = ‘Continue’
$ErrorActionPreference = ‘Stop’
# some reserved script variables
$resourceGroupName = $storageAccount.ResourceGroupName
$location = $storageAccount.Location
$adminUsername = ‘VmAdministrator’
$adminPassword = ‘123!SomeUnSecurePassword!098’
$vmSuffix = Get-Random -Minimum 10000 -Maximum 99999
$vmName = ‘VM{0}’ -f $vmSuffix
$vmSize = ‘Standard_D3’
$nicName = ‘VM{0}-NIC’ -f $vmSuffix
$ipName = ‘VM{0}-IP’ -f $vmSuffix
$domName = ‘vm-from-customimage-powershell-{0}’ -f $vmSuffix
$vnetName = $vmName
# Create the VNET
Write-Verbose ‘Creating Virtual Network’
$vnetDef = New-AzureRmVirtualNetwork -ResourceGroupName $resourceGroupName -Location $location -Name $vnetName -AddressPrefix ‘10.0.0.0/16’
Write-Verbose ‘Adding subnet to Virtual Network’
$vnet = $vnetDef | Add-AzureRmVirtualNetworkSubnetConfig -Name ‘Subnet-1’ -AddressPrefix ‘10.0.0.0/24’ | Set-AzureRmVirtualNetwork
# Create the NIC
Write-Verbose ‘Creating Public IP’
$pip = New-AzureRmPublicIpAddress -ResourceGroupName $resourceGroupName -Location $location -Name $ipName -DomainNameLabel $domName -AllocationMethod Dynamic
Write-Verbose ‘Creating NIC’
$nic = New-AzureRmNetworkInterface -ResourceGroupName $resourceGroupName -Location $location -Name $nicName -PublicIpAddressId $pip.Id -SubnetId $vnet.Subnets[0].Id
# Specify the VM name and size
Write-Verbose ‘Creating VM Config’
$vm = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize
# Specify local administrator account, and then add the NIC
$cred = New-Object PSCredential $adminUsername, ($adminPassword | ConvertTo-SecureString -AsPlainText -Force) # you could use Get-Credential instead to get prompted
# NOTE: if you are deploying a Linux machine, replace the -Windows switch with a -Linux switch.
$vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id
# Specify the OS disk
$diskName = ‘osdisk’
$osDiskUri = ‘{0}vhds/{1}{2}.vhd’ -f $storageAccount.PrimaryEndpoints.Blob.ToString(), $vmName.ToLower(), $diskName
# NOTE: if you are deploying a Linux machine, replace the -Windows switch with a -Linux switch.
$vm = Set-AzureRmVMOSDisk -VM $vm -Name $diskName -VhdUri $osDiskUri -CreateOption fromImage -SourceImageUri $sourceImageUri -Windows
Write-Verbose ‘Creating VM…’
$result = New-AzureRmVM -ResourceGroupName $resourceGroupName -Location $location -VM $vm
if($result.Status -eq ‘Succeeded’) {
$result
Write-Verbose (‘VM named ”{0}” is now ready, you can connect using username: {1} and password: {2}’ -f $vmName, $adminUsername, $adminPassword)
} else {
Write-Error ‘Virtual machine was not created successfully.’
}

Obrigado mais uma vez… até a próxima…

 

 

 

 

 

Anúncios

Capturando sua própria imagem de Virtual Machine personalizada sob o gerenciador recursos Azure

Vou mostrar como criar suas próprias imagens personalizadas para criar outras Máquinas Virtuais a partir dela, em vez de uma oferecida na galeria.

Requisitos

  • Microsoft Azure PowerShell <= v0.9.xxx OU Microsoft Azure PowerShell> = v1.0.xxx
  • Uma máquina virtual no Azure executando o Windows Server 2012 ou posterior

Uma imagem de VM generalizada, o próprio nome já diz é uma VM que foi criada anteriormente, personalizada e aonde executou um sysprep, aonde necessita usar a mesma como modelo.

Preparando Virtual Machine

No Windows, executar o PowerShell em modo adm e executar o seguinte comando:

& "$Env:SystemRoot\system32\sysprep\sysprep.exe" /generalize /oobe /shutdown

1

Você verá uma caixa de diálogo dizendo que o Sysprep está funcionando, levará pelo menos 2-3 minutos.

2

/shutdownparâmetro desligará a VM quando o sysprep for feito generalizando a VM.

Permita um ou dois minutos para que você veja que o status da VM está realmente marcado como parado no portal.

3

Eu estou me baseando neste artigo em um artigo postado aonde abaixo colocarei a referência, porém venho de forma direta e objetiva como seguir com os passos e atender sua necessidade.

Com os itens acima feitos, agora você precisa capturar esta imagem, no caso fiz via PowerShell (mesmo abaixo).

Para ser objetivo, basta executar este Powershell abaixo, se baseando na versão do seu Powershell (links referência abaixo), lembrando de alterar o número da assinatura, seu resource group e nome da vm, neste caso usamos o modelo acima de VM.

# Preparar Virtual Machine
# Open PoweShell >
## – Comando -> & “$Env:SystemRoot\system32\sysprep\sysprep.exe” /generalize /oobe /shutdown
# Login into Azure and select the desired subscription
Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
# Deallocate the virtual machine
Stop-AzureRmVM -ResourceGroupName ‘Resouce_Group’ -Name ‘CaptureVMImage’
# Set the Generalized state to the virtual machine
Set-AzureRmVM -ResourceGroupName ‘Resouce_Group’ -Name ‘CaptureVMImage’ -Generalized
# Capture the image to storage account.
Save-AzureRmVMImage -ResourceGroupName ‘Resouce_Group’ -VMName ‘CaptureVMImage’ -DestinationContainerName ‘template’ -VHDNamePrefix ‘template’ -Path C:\temp\capturevmtest\SampleTemplate-mide4.json

-Pathparâmetro do Save-AzureRmVMImagecmdlet irá baixar uma cópia do arquivo do modelo ARM gerado na conta de armazenamento e salvá-la onde você especificou. O JSON também será exibido na janela do PowerShell.

Há um erro na implementação real da chamada de captura. O que você especificar no DestinationContainerName salvará a imagem em um recipiente denominado System na conta de armazenamento com um caminho blob contendo o nome que você especificou como o nome do contêiner.

Este é um exemplo do que você pode esperar como caminho completo (o seu será um pouco diferente dependendo dos valores dos parâmetros que você digitou):
https://vmcapturedemo.blob.core.windows.net/system/Microsoft.Compute/Images/mytemplates/template-osDisk.c2a2a4e3-a2cb-44f1-9d55-921dfa29b314.vhd

Ao olhar a Storage, nota-se system abaixo:

stg

Próximo artigo, como criar uma VM a partir de uma imagem personalizada

Obrigado.

Referência:

Point-to-Site conexão para vnet (Azure) usando autenticação por certificado

Neste post venho mostrar rápido e direto como criar uma conexão point to site, aonde aqui contamos que já tenha sua rede (vnet) criada e seu VPN Gateway. Caso contrário devemos antes de tudo criar um rede virtual, subnet e um VPN Gateway assim como demais configurações.

 

Um gateway VPN Ponto a Site (P2S) permite que você crie uma conexão segura para sua rede virtual a partir de um computador cliente individual. As conexões VPN Ponto a Site são úteis quando você deseja se conectar à rede virtual de um local remoto, como ao trabalhar de casa ou em uma conferência. Uma VPN P2S também é uma solução útil para usar em vez de uma VPN Site a Site, quando você tiver apenas alguns clientes que precisam se conectar a uma rede virtual.
P2S usa o SSTP (Secure Socket Tunneling Protocol), que é um protocolo VPN baseado em SSL. Uma conexão VPN P2S é estabelecida iniciando-a do computador cliente.

Precisamos basicamente de:

  • VPN Gateway RouteBased
  • Uma public key (.cer) para o certififcado root, que deverá ser configurado no Azure. Quando feito upload, o mesmo é considerado confiável e usado para autenticação
  • Um certificado cliente, este gerado do root. Este Certificado deverá ser instalado no cliente que irá efetuar acesso.
  • Um pacote VPN Client, este último pode ser feito download após gerar configuração no Azure.

No modelo abaixo na documentação da microsoft temos uma VNET já criada, subredes, até já um VPN Gateway também criado.

point-to-site-connection-diagram

Vou seguir neste post como se estes itens já tivessem sidos criados, aonde você precise seguir somente os passos sitados abaixo para o Point-to-Site.

Passos

  1. Gerar o certificado

Para gerar o certificado root e cliente a partir dele, basta executar via powershell:

*Alterar o CN pelo nome que deseja.

$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature `
-Subject “CN=P2SAzure-RootCert” -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation “Cert:\CurrentUser\My” -KeyUsageProperty Sign -KeyUsage CertSign
New-SelfSignedCertificate -Type Custom -KeySpec Signature `
-Subject “CN=P2SAzure-ClientCert” -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation “Cert:\CurrentUser\My” `
-Signer $cert -TextExtension @(“2.5.29.37={text}1.3.6.1.5.5.7.3.2”)
Get-ChildItem -Path “Cert:\CurrentUser\My”

Após isso, abrir o mmc e adicionar o snap-in Certificados -> Usuário Atual. Verá abaixo os dois certificados criados pelo PowerShell acima.

certificado

Adicionar o Client address pool

No Virtual Network Gateway uma vez criado, ir em Settings, opção Point-to-Site-Configuration:

vng.JPG

Temos de configurar dois itens nesta tela, um sendo o pool de endereços (Ex: 192.168.1.0/24) que irá receber quando um cliente conectar, outro ponto deve adicionar o nome do certificado root e certificate data.

Para pegar o Certificate data, primeiro deve exportar o certificado root antes gerado,  clicando com o botão direto, todas as tarefas e selecionar exportar. Seguir o Assistente, com opção de não exportar a chave privada e e com X.509 codificado na base .64 (*.cer):

cert1

Após exportar, editar o certificado root.cer com notepad++ ou outro editor de texto, selecionando o certificate data entre –BEGIN CERTIFICATE— até –END CERTIFICATE —

ce

Selecionar, copiar e colar :

root

Clicar em Salvar

Após isso irá habilitar a opção Download VPN Cliente, faça o download (Versão X64 ou X86) dele e separe.

Como um cliente conecta?

Agora você tem dois itens importantes, sendo um o VPN Client Configuration package que fez download acima, outro seria o certificado cliente (gerado anteriormente via powershell), aonde deve ser feito o export do mesmo

Outro, é você exportar agora o certificado cliente gerado anteriormente via powershell, porém com a opção:

certaaasd

Pronto, para que um cliente conecte basta instalar o VPN Client e instalar o certificado cliente exportado (com senha).

Para se conectar ao seu VNet, no computador cliente, navegue para conexões VPN e localize a conexão VPN que você criou. É chamado o mesmo nome que sua rede virtual. Clique em Conectar . Pode aparecer uma mensagem pop-up que se refere ao uso do certificado. Clique em Continuar para usar privilégios elevados.

Na página Status da conexão , clique em Conectar para iniciar a conexão. Se você vir uma tela Selecionar Certificado, verifique se o certificado do cliente mostrando é aquele que deseja usar para se conectar. Se não estiver, use a seta suspensa para selecionar o certificado correto e clique em OK .
vpn1

Pronto, conectado

vpn2

 

Espero que tenha sido esclarecido de forma direta e objetiva, como criar um conexão VPN Point-to-Site a partir de um VPN Gateway criado.

Usei em um ambiente que já possuía uma conexão Site-to-Site e precisava com Matriz e precisava que nossos técnicos tivessem uma conexão segura e direta, uma vez que existem regras NSG nas subredes criadas que restrigem os acessos RDP´s.

Obrigado.

Referência.: https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-point-to-site-resource-manager-portal

Managed disk on Azure

Você já deve ter encontrado esta opção ao criar uma VM no Azure, basicamente na Blade Settings, opção Storage:

managedisk1

Na opção Managed disk o Azure lida com o armazenamento para você, aonde anteriormente era necessário criar Storage Account para armazenar
os discos (arquivos VHD) para suas VMs no Azure.

Ao aumentar, era necessário certificar-se de que você havia criado contas de armazenamento adicionais para não exceder o limite de IOPS do armazenamento com qualquer um de seus discos. Com o Managed Disks lidando com o armazenamento, não há mais os limites de conta de armazenamento (como 20.000 IOPS/conta). Também não é mais necessário copiar as imagens personalizadas (arquivos VHD) em várias contas de armazenamento. Você pode gerenciá-las em um local central, uma conta de armazenamento por região do Azure, e usá-las para criar centenas de VMs em uma assinatura.

Com Discos gerenciáveis temos maior confiabilidade, garantindo os discos isolados para evitar ponto de falha.

Fornece uma disponibilidade de 99,9%

Estes são os tamanhos de disco disponíveis para um disco gerenciado premium:

Tipo de Premium Managed
Disk
P4 P6 P10 P20 P30 P40 P50
Tamanho do disco 32 GB 64 GB 128 GB 512 GB 1024 GB (1 TB) 2048 GB (2 TB) 4095 GB (4 TB)

Estes são os tamanhos de disco disponíveis para um disco gerenciado padrão:

Tipo de Standard Managed
Disk
S4 S6 S10 S20 S30 S40 S50
Tamanho do disco 32 GB 64 GB 128 GB 512 GB 1024 GB (1 TB) 2048 GB (2 TB) 4095 GB (4 TB)

Em alguns casos pode ser necessário não utilizar gerenciável, neste caso ao escolher a opção No ele vai pedir para escolher um Storage Account existente ou criar uma nova como imagem abaixo:

managedisk2

Neste caso quando criado a VM, você terá seus discos criados na Storage Account conforme imagem:

managedisk3

Quando prefere usar contas de armazenamento, para controlar o acesso aos VHDs, com discos gerenciados, você também pode usar o RBAC para atribuir as permissões de um disco gerenciado a um ou mais usuários. Nesse cenário, você deve gerenciar o disco por disco e não a toda a conta de armazenamento. Isso significa mais controle de acesso granular. Você pode impedir, por exemplo, um usuário de copiar esse vhd, mas ainda usar a máquina virtual.

A integração com o Azure Backup é excelente. Você pode usar o Serviço de backup do Azure com disco gerenciado para criar um trabalho de backup que facilite a restauração da sua VM. Embora os discos gerenciados, apenas suportem o armazenamento localmente redundante (LRS) como uma opção de replicação, isso significa que 3 cópias do vhd dentro da região.

Para retomar, aqui estão os benefícios dos discos gerenciados:

Implementação de VM simples e escalável
Melhor confiabilidade para Availability Sets
Controle de acesso granular
Suporte ao serviço de backup Azure

Link Video sobre Managed Disk

Referência: https://docs.microsoft.com/pt-br/azure/virtual-machines/windows/managed-disks-overview

Material de Estudo 70-533

Encontrei recente um site com alguns links por tópico muito interessante para estudo e venho compartilhar:

Design and implement Azure App Service apps

Deploy Web Apps

Configure Web Apps

Configure diagnostics, monitoring, and analytics

Configure Web Apps for scale and resilience

Create and manage Azure Resource Manager Virtual Machines (20–25%)

Deploy workloads on Azure Resource Manager (ARM) virtual machines (VMs)

Perform configuration management

Design and implement VM storage

Monitor ARM VMs

Monitor ARM VM availability

Scale ARM VMs

Design and implement a storage strategy

Implement Azure storage blobs and Azure files

Manage access

Configure diagnostics, monitoring, and analytics

Implement Azure SQL Databases

Implement recovery services

Implement an Azure Active Directory

Integrate an Azure Active Directory (Azure AD) with existing directories

Configure Application Access

Integrate an app with Azure AD

Implement Azure AD B2C and Azure B2B

Implement virtual networks

Configure virtual networks

Modify network configuration

Design and implement a multi-site or hybrid network

Design and deploy ARM templates (10–15%)

Implement ARM templates

Control access

Design role-based access control (RBAC)

Servidores de DNS Externo

Google

8.8.8.8
8.8.4.4

Level 3 Communications (Broomfield, CO, US)

4.2.2.1
4.2.2.2
4.2.2.3
4.2.2.4
4.2.2.5
4.2.2.6

Verizon (Reston, VA, US)

151.197.0.38
151.197.0.39
151.202.0.84
151.202.0.85
151.202.0.85
151.203.0.84
151.203.0.85
199.45.32.37
199.45.32.38
199.45.32.40
199.45.32.43

GTE (Irving, TX, US)

192.76.85.133
206.124.64.1

One Connect IP (Albuquerque, NM, US)

67.138.54.100

OpenDNS (San Francisco, CA, US)

208.67.222.222
208.67.220.220

Exetel (Sydney, AU)

220.233.167.31

VRx Network Services (New York, NY, US)

199.166.31.3

SpeakEasy (Seattle, WA, US)

66.93.87.2
216.231.41.2
216.254.95.2
64.81.45.2
64.81.111.2
64.81.127.2
64.81.79.2
64.81.159.2
66.92.64.2
66.92.224.2
66.92.159.2
64.81.79.2
64.81.159.2
64.81.127.2
64.81.45.2
216.27.175.2
66.92.159.2
66.93.87.2

Sprintlink (Overland Park, KS, US)

199.2.252.10
204.97.212.10
204.117.214.10

Cisco (San Jose, CA, US)

64.102.255.44
128.107.241.185

OpenNIC

202.83.95.227 (au)
119.31.230.42(au)
178.63.26.173 (de)
217.79.186.148 (de)
27.110.120.30(nz)
89.16.173.11 (uk)
69.164.208.50 (us)
216.87.84.211(us)
2001:470:8388:10:0:100:53:20 (us)
2001:470:1f10:c6::2 (us)