BLOG

Martes, 16 Enero 2018 08:27

Crear una Azure SQL Database con Powershell

Michael Villegas junto al logo de Trans SolutionsMichael Villegas, DBA Senior en Trans Solutions Systems, es un entusiasta de la tecnología, principalmente del mundo de las bases de datos donde él se desenvuelve como un DBA desde hace ya más de 6 años. Hoy nos presenta cómo crear una Azure SQL Database con Powershell.

Seguramente todos los que estamos en el mundo de TI hemos escuchado en los últimos años que la tendencia de la tecnología es ir hacia la nube. El objetivo de este artículo no es discutir esta tendencia, sino, presentar cómo Powershell se puede convertir en una herramienta muy valiosa al momento de interactuar con la nube. Aquí vamos a mostrar cómo crear algunos objetos para poder utilizar Azure SQL Database.

Lo primero que debemos tener es una cuenta de Azure. La podemos crear de manera gratuita desde la página oficial de Azure (https://azure.microsoft.com). Una vez creada la cuenta, se nos dará un crédito inicial para poder realizar pruebas dentro de esta plataforma. 

Luego, instalaremos el módulo de Powershell AzureRM en nuestra máquina. Esto es necesario para poder interactuar con los objetos que creemos en nuestra cuenta de la nube. Para instalar dicho modulo debemos seguir las instrucciones detalladas en la página oficial

Ahora debemos ingresar desde Powershell a la cuenta de Azure previamente creada. Al ejecutar el siguiente comando se presentará una pantalla de “login” para poder ingresar las credenciales de la cuenta Azure.

Add-AzureRmAccount                                                                                     

 

Pantalla de Login de Window AzureWindows Powershell

A continuación, vamos a crear un Resource Group de prueba que alojará todos los objetos que utilizaremos para crear nuestra base de datos SQL en Azure. Para ello crearemos un par de variables las cuales básicamente indicarán el nombre y la localización de nuestro Resource Group.

$resourceGroupName = "sqlrgtest"

$location = "East US"

New-AzureRmResourceGroup -Name $resourceGroupName -Location $location                               

 

Windows PowerShell

 

Una vez que el Resouce Group ha sido creado, vamos a proceder a la creación del servidor Lógico para nuestra base de datos. Es un servidor lógico porque no contiene todo lo que normalmente encontramos dentro de una instancia de base de datos instalada “on premise”. Para crear dicho servidor debemos asignarle un nombre, en este caso estoy generando uno de manera aleatoria, y tener una credencial para el administrador del servidor, algo así como el usuario “sa”. Una vez que tenemos la credencial usamos el comando “New-AzureRmSqlServer”.

$serverName = "server-$(Get-Random)"

$adminLogin = "sqladmin"

$password = ConvertTo-SecureString -String "PasswordSeguro" -AsPlainText -Force

$adminCred = New-Object -TypeName pscredential -ArgumentList $adminLogin, $password

New-AzureRmSqlServer -ResourceGroupName $resourceGroupName -ServerName $serverName `

-Location $location -SqlAdministratorCredentials $adminCred

 

Administrador de Windows Powershell

 

Finalmente, con el servidor creado, podemos proceder a crear nuestra base de datos SQL en Azure. Necesitamos definir un nombre, el cual lo haré a través de una variable.

Adicionalmente hay que definir la edición o tamaño de nuestra base de datos. En esta ocasión vamos a utilizar la opción “Free” que nos otorga 5 DTU de recursos de procesamiento y hasta 32 MB de almacenamiento. Existen otros tamaños de base de datos los cuales son pagados, y ofrecen mucho más almacenamiento y potencia de procesamiento. Para nuestra prueba está bien con la opción “Free”. Curiosamente la opción “Free” no está disponible desde el portal de Azure, solo a través de Powershell.

$databasename = "mySampleDatabase"

New-AzureRmSqlDatabase -ResourceGroupName $resourceGroupName -        

ServerName $serverName `         

-DatabaseName $databasename -Edition Free

 

Windows PowerShell

 

¿Pero podremos conectarnos a nuestra base de datos?, la respuesta es NO. Azure por defecto no permite conexiones a menos que se haya configurado correctamente las reglas de firewall del servidor o de la base de datos. Si intentamos conectarnos en este momento vamos a recibir un mensaje igual al siguiente:

Login de SQL Server

 

Se nos pide acceder con nuestra cuenta Azure para que el mismo SSMS cree la regla de Firewall de servidor para poder acceder. Nosotros no seguiremos ese camino, sino que la crearemos desde Powershell.

Para crear la regla desde Powershell primero averiguaremos nuestra IP pública. Esta será la que se use para poder acceder a nuestra base de datos, no la IP de la red interna a la que estamos conectados. Para obtener esta IP, utilicé el código encontrado en este link. Una vez que tenemos la IP procedemos crear la regla con el comando “New-AzureRmSqlServerFirewallRule”.

$ip = Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

New-AzureRmSqlServerFirewallRule -ResourceGroupName

$resourceGroupName `

-ServerName $serverName -FirewallRuleName "PermitirMiIP" `        

-StartIpAddress $ip -EndIpAddress $ip

 

Windows Powershell

 

Ahora sí podemos acceder a nuestro servidor a través de nuestro SSMS.

SSMS