O utilizo Azure con mis alumnos y quiero que todos tengan las máquinas configuradas de la misma manera.
Esto se podría hacer por la web http://portal.azure.com. Pero hay demasiados pasos y posibilidades de error. Es por eso que me he decidido a crear un powershell utilizando Azure RM que cree TODO desde cero con la configuración que quiero.
Creo todas las variables que voy a usar posteriormente:
#Con ARM.... la nueva versión de máquinas virtuales
$MiNN            = "32"                    #Número a cambiar para crear varias máquinas virtuales
$MiDNS           = "40.127.177.225"        #Dirección IP del servidor DNS de la organización que quieres que utilicen las máquinas
#=============================================
$Migr            = "gr$MiNN"               #Grupo de recursos
$MiRed           = "red$MiNN"              #Nombre de red
$MiSubred        = "misubred$MiNN"         #Nombre de la subred
$MiRangoIP       = "10.4.1$MiNN.0/24"      #Rango de direcciones subrede
$MiLoc           = "North Europe"          #Localización de todos los recursos. Podría ser también "East US" o ....
$MiAlmacen       = "almacensri$MiNN"       #Nombre del almacenamiento 
$MiVMSize        = "Basic_A1"              #Tamaño de la máquina virtual
#=============================================
$MiMVws          = "ws2015$MiNN"           #WINDOWS. Nombre de la máquina virtual
$MiIpPrivws      = "10.4.1$MiNN.101"       #WINDOWS. Dirección IP privada estática
$MiIPws          = "IPws$MiNN"             #WINDOWS. Nombre de la Dirección IP pública estática 
$MiNICws         = "NICws$MiNN"            #WINDOWS. Tarjeta de red
$MiGSws          = "GS_ws$MiNN"            #WINDOWS. Grupo de seguridad. Se definirar las reglas de entrada y salida del tráfico
#=============================================
$MiMVus          = "us2015$MiNN"           #UBUNTU.  Nombre de la máquina virtual
$MiIpPrivus      = "10.4.1$MiNN.100"       #UBUNTU.  Dirección IP privada estática
$MiIPus          = "IPus$MiNN"             #UBUNTU.  Nombre de la Dirección IP pública estática
$MiNICus         = "NICus$MiNN"            #UBUNTU.  Tarjeta de red
$MiGSus          = "GS_us$MiNN"            #UBUNTU.  Grupo de seguridad. Se definiran las reglas de entrada y salida del tráfico
#=============================================
Hay que crear:GRUPO DE RECURSOS en la ubicación que quieras. En nuestro caso será el "Norte de Europa".
New-AzureRmResourceGroup #Añadir Grupo de Recursos
$GrupoRecursos   = New-AzureRmResourceGroup    -Location $MiLoc -Name $Migr
#$GrupoRecursos   = Get-AzureRmResourceGroup -Name $Migr
GRUPO DE ALMACENAMIENTO
ew-AzureRmStorageAccount #Añadir Cuenta de almacenamiento
$CuentaAlmacen   = New-AzureRmStorageAccount   -Location $MiLoc -Name $MiAlmacen -Type Standard_LRS -ResourceGroupName $Migr
RED Y SUBRED.
New-AzureRmVirtualNetworkSubnetConfig
New-AzureRmVirtualNetwork
#Añadir Red y Subred
$SubRed          = New-AzureRmVirtualNetworkSubnetConfig        -Name $MiSubred  -AddressPrefix  $MiRangoIP
$RedVirtual      = New-AzureRmVirtualNetwork   -Location $MiLoc -Name $MiRed     -AddressPrefix "10.0.0.0/8" -DnsServer $MiDNS -Subnet $SubRed -ResourceGroupName $Migr
GRUPO DE SEGURIDAD (Sólo muestro la regla del RDP, las otras serían similares con distinta prioridad).
New-AzureRmNetworkSecurityGroup
#WINDOWS. Añadir Grupo de seguridad
                   New-AzureRmNetworkSecurityGroup -Location $MiLoc -Name $MiGSws -ResourceGroupName $Migr 
                   Get-AzureRMNetworkSecurityGroup -Name $MiGSws -ResourceGroupName $Migr | Add-AzurermNetworkSecurityRuleConfig -Name "allow-rdp-in"      -Direction Inbound  -Priority 100 -Access Allow -SourceAddressPrefix * -SourcePortRange *    -DestinationAddressPrefix * -DestinationPortRange 3389 -Protocol TCP | Set-AzureRmNetworkSecurityGroup
                   Get-AzureRMNetworkSecurityGroup -Name $MiGSws -ResourceGroupName $Migr | Add-AzureRmNetworkSecurityRuleConfig -Name "allow-rdp-out"     -Direction Outbound -Priority 100 -Access Allow -SourceAddressPrefix * -SourcePortRange 3389 -DestinationAddressPrefix * -DestinationPortRange *    -Protocol TCP | Set-AzureRmNetworkSecurityGroup
$GrupoSeg_ws     = Get-AzureRmNetworkSecurityGroup -Name $MiGSws -ResourceGroupName $Migr
CREACIÓN DE IP PÚBLICA ESTÁTICA Y DE LA TARJETA DE RED
New-AzureRmPublicIpAddress
New-AzureRmNetworkInterface
$pipws           = New-AzureRmPublicIpAddress  -Location $MiLoc -Name $MiIPws  -AllocationMethod static -ResourceGroupName $Migr -DomainNameLabel $MiMVws
$nicws           = New-AzureRmNetworkInterface -Location $MiLoc -Name $MiNICws -SubnetId $RedVirtual.Subnets[0].Id -PublicIpAddressId $pipws.Id -PrivateIpAddress $MiIpPrivws  -ResourceGroupName $Migr -NetworkSecurityGroupId $GrupoSeg_ws.Id
CREACIÓN DE LA MÁQUINA VIRTUAL
New-AzureRmVM
#===========================
#WINDOWS. Creación de la máquina virtual
$imagePublisher  = "MicrosoftWindowsServer"
$imageOffer      = "WindowsServer"
$VersionOSSku    = "2012-R2-Datacenter"
$pipws           = New-AzureRmPublicIpAddress  -Location $MiLoc -Name $MiIPws  -AllocationMethod static -ResourceGroupName $Migr -DomainNameLabel $MiMVws
$nicws           = New-AzureRmNetworkInterface -Location $MiLoc -Name $MiNICws -SubnetId $RedVirtual.Subnets[0].Id -PublicIpAddressId $pipws.Id -PrivateIpAddress $MiIpPrivws  -ResourceGroupName $Migr -NetworkSecurityGroupId $GrupoSeg_ws.Id
$cred            = Get-Credential     -Message "Introduce el nombre del usuario y la contraseña"
$vm              = New-AzureRmVMConfig -VMName $MiMVws -VMSize $MiVMSize   
$vm              = Set-AzureRmVMOperatingSystem  -VM $vm -Windows -ComputerName $MiMVws -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$vm              = Set-AzureRmVMSourceImage      -VM $vm -PublisherName $imagePublisher -Offer $imageOffer -Skus $VersionOSSku -Version "latest"
$vm              = Add-AzureRmVMNetworkInterface -VM $vm -Id $nicws.Id
$osDiskUri       = $CuentaAlmacen.PrimaryEndpoints.Blob.ToString() + "vhds/$MiMVws.vhd"
$vm              = Set-AzureRmVMOSDisk -VM $vm -Name $MiMVws -VhdUri $osDiskUri -CreateOption fromImage
                   New-AzureRmVM -ResourceGroupName $Migr       -Location $MiLoc -VM $vm
De la misma forma se podría hacer con una máquina virtual Ubuntu.
Si queréis descargar el código podéis hacerlo de:
https://github.com/javiteran/powershellAzureRM
Espero que os sirva.
Para hacer esto hay que primero conectarse a la suscripción de Azure mediante powershell.
Login-AzureRmAccount
$subscriptionId = 
    ( Get-AzurermSubscription |
        Out-GridView `
          -Title "Selecciona cuenta ..." `
          -PassThru
    ).SubscriptionId
Select-AzurermSubscription -SubscriptionId $subscriptionId
#Comprobación
Get-AzurermSubscription

 
 
No hay comentarios:
Publicar un comentario