sábado, 27 de febrero de 2016

Aplicacion Access en Office 365. Access Web. 2. Conexión con el SQL Server Management Studio (SSMS) o a través de ODBC.

La base de datos de la aplicación Access Web se crea en una Base de Datos Azure 

Se puede ver la creación de la aplicación Access Web en Office 365 en el siguiente enlace:
Aplicacion Access en Office 365. Access Web. 1. Creación, consejos iniciales.

En este video veremos como conectar a la base de datos de una aplicación ACCESS WEB en Office 365 utilizando el Sql Server Management Studio y Excel con ODBC.



Aplicacion Access en Office 365. Access Web. 1. Creación, consejos iniciales.

Consejos:

1. Todas las tablas deben tener un ID autonumérico.
Si no se creará uno en la migración y descuadrará los datos.

 2. Crear relaciones entre las tablas para exigir integridad referencial.

3. No poner campos de búsqueda.
Automáticamente generará en la aplicación los campos de búsqueda y sus subformularios. Si pones campos de búsqueda, NO LO HARA!!!

4. Poner título en todos los campos para que aparezca correctamente en la aplicación final.




Para ver la segunda parte:
Aplicacion Access en Office 365. Access Web. 2. Conexión con el SQL Server Management Studio (SSMS) o a través de ODBC.

miércoles, 17 de febrero de 2016

Azure RM (ARM). Crear Máquina Virtual en Azure con Powershell .Crear Grupo de Recursos, Almacen, RED, Grupo de Seguridad, IP pública, IP privada y Tarjeta de Red

Hay veces que tengo que generar varias máquinas en mis suscripciones de Azure.
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