Hola,
A continuación os detallo el script necesarios para, usando Azure Powershell, crear una VM tras haber subido el disco VHD a un Container existente en un Blob Page.
Antes de detallaros el scipt, tener en cuenta lo siguiente:
- Si la máquina corre actualmente en un Hyper-V y tiene un disco VHDX, con la propia consola de Hyper-V y con la VM apagada, podéis editar el disco y partiendo de él, crear un archivo VHD Fijo.
- Crear VM en modo Generalized, se considera que el disco ha sido preparado para partiendo de él, crear varias máquinas virtuales. Por ello, a la VM modelo se le hace un sysprep antes de subir el VHD a Azure. (https://docs.microsoft.com/es-es/azure/virtual-machines/windows/capture-image-resource)
- El script es válido para una VM “Specialized”. Esto es una AzureVM creada a partir del VHD que es el mismo disco duro que estaba corriendo en una VM Hyper-V/Vmware en los que se ha convertido su disco VHDX o VMDK a VHD Fijo.
- Que tras crear la VM tenéis que instalar el agente de gestión de Azure, para el mero hecho de poder hacer Backups de la VM o bien por ejemplo utilizar opciones como resetear contraseña, monitorizarla, etc. (https://go.microsoft.com/fwlink/?LinkID=394789&clcid=0x409) A riesgo de ver errores como estos:
Script:
Este script cambia el orden y algunas pequeñas cosas, dando a mi juicio mayor sentido común, en relación a los pasos aparecidos aquí: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sa-create-vm-specialized
En el script partimos de tener un Grupo de recursos creado y el VHD subido.
$rgName = "RG1"
$location = "North Europe"
$vnetName = "Vnet1"
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location -AddressPrefix 172.16.224.0/19 -Subnet $singleSubnet
$nsgName = "SG1"
$rdpRule = New-AzNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" `
-Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
-SourceAddressPrefix Internet -SourcePortRange * `
-DestinationAddressPrefix * -DestinationPortRange 3389
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $rgName -Location $location `
-Name $nsgName -SecurityRules $rdpRule
$subnetName = "Vnet1_subnet1"
$singleSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 172.16.224.0/24
$ipName = "PUblicIP1"
$pip = New-AzPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location -AllocationMethod Static
$nicName = "VM1Nic1"
$nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
$vmName = "Vm1"
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize "Standard_A2"
$vm = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id
$osDiskUri = https://XXXXXXXX.blob.core.windows.net/xxxxx/XXXXXX.vhd
$osDiskName = $vmName + "osDisk"
$vm = Set-AzVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption attach –Windows
New-AzVM -ResourceGroupName $rgName -Location $location -VM $vm –DisableBginfoExtension –credential (get-credential)
*Atentos a DisableBGINfoExtension : De no deshabilitar tendréis problemas por ejemplo a la hora de configurar los discos como gestionados.
*-Credential: Es importante proporcionar a Azure las credenciales de un usuario administrador de la máquina, Si esto se realiza, se puede evitar la variable –DisableBgInfoExtension.
No hay comentarios:
Publicar un comentario