Escrito por Scott Hanselmann.
Aunque trabajo para el equipo de Azure y ASP.NET, tengo que pagar por mi propia cuenta de Azure. Francamente, si obtuviera tiempo en la nube gratuito, no sólo es probable que abuse sino que estaría usando la nube de la forma que no se supone que sea utilizada. Desde mi perspectiva una buena nube es una nube barata. Utilizo CDNs, cachés, y me enfoco en un balance entre recursos económicos y computación que funcione para mi cuando lo necesite y que duerman (y no me cuesten dinero) cuando no.
Hay cosas como auto-escalamiento para sitios web, por ejemplo, basados en CPU o un cronograma, pero una cosa que me mete en problemas (a veces) es dejar grandes máquinas virtuales prendidas. Administro la mayoría de mis recursos en Azure desde la línea de comando, puedo escribir «azure vm list» para ver que está ejecutándose y veré esto:
Si quiero apagar una máquina virtual, utilizo la línea de comando, el portal de Azure, o puedo aún administrar máquinas virtuales dentro del mismo Visual Studio.
Pero a veces tengo aplicaciones hechas a medida para administrar recursos Azure, quizás aplicaciones WinForms o WPF, tareas MSBuild, o quiero agregar administración en la nube para un proceso existente. Quiero no solo apagar máquinas virtuales sino también administrar sitios web, crear recursos, subir cosas al almacenamiento y más.
Justo he aprendido de Brady Gaster que hay ahora las librerías de administración para .NET de Windows Azure son parte del Azure SDK (software development kit, o kit de desarrollo de software). Básicamente esto significa que puedes llamar las mismas REST APIs que el portal de Azure llama ahora, excepto que ahora con una envoltura (wrapper) más simple alrededor de ellas lo que lo hace un poco más fácil en .NET.
Brady tiene mucha información en su blog sobre estas librerías. Aquí algunas de sus características más resaltantes:
- Soporta librerías de clases portátiles (PCL Portable Class Libraries)
- Viene con un conjunto de paquetes NuGet enfocados con mínimas dependencias para simplificar el versionamiento.
- Soporta asincronía de tareas basadas en async/await (con fáciles sobrecargas síncronas)
- Tiene una infraestructura compartida para manejo de errores comunes, rastrear, configuración y manipulación de la tubería HTTP.
- Está factorizada para fácil testeabilidad y «mocking» (se refiere a la suplantación de un objeto por otro con el objeto de facilitar las pruebas).
- Está construído encima de librerías populares tales como HttpClient y Json.NET.
- Es todo código abierto y está en GitHub.
Están disponibles en NuGet como un grupo de paquetes pero puedes obtenerlos separadamente si quieres sólo administrar máquinas virtuales, por ejemplo. Aquí la versión que estoy usando de NuGet. Noten que está en pre-lanzamiento cuando esté artículo fue escrito. https://www.nuget.org/packages/Microsoft.WindowsAzure.Management.Libraries
La autenticación de Azure y la autorización está basada en certificados X509, por lo tanto tendrás que utilizarlos para inicialmente hablar con tu instancia de Azure. Puedes descargar tus certificados desde una sesión autenticada aquí y tus certificados y identificación de suscripción están dentro.
Puedo listar por ejemplo todos mis sitios web que están ejecutándose en todas sus ubicaciones (espacios web).
using (var client = new WebSiteManagementClient((creds))
{
var spaces = client.WebSpaces.List();
foreach (var space in spaces) {
Console.WriteLine("Space: {0}", space.Name);
var sites = client.WebSpaces.ListWebSites(space.Name, new WebSiteListParameters{ PropertiesToInclude = { "Name" }});
foreach (var site in sites) {
Console.WriteLine(" " + site.Name);
}
}
}
Esta pequeña aplicación da la siguiente salida:
Space: eastuswebspace
SmallestDotNet
Space: northcentraluswebspace
Hanselminutes
Space: northeuropewebspace
Space: westuswebspace
babysmash
nerddineroofficial
ratchetandthegeek
speakinghacks
thisdeveloperslife
hanselmannlyncrelay
HanselmanGhost
anglebrackets
lostphonescreen
loggingtest
GetInvolved
keysleft
Puedo actualizar sitios, desactivarlos (detenerlos), hacer granjas web, escalarlas, crear, configurar y generalmente hacer todo lo que puedo desde la línea de comandos. Ahora puedo administrar Azure desde PowerShell, desde .NET, desde «node» y la línea de comando cross-platform (cruza plataformas), Visual Studio y el portal de Azure.
Si enlazas tu cuenta de MSDN y la de Azure puedes obtener $150 al mes en crédito en Azure, puedes correr hasta 2 máquinas virtuales todo los días por un mes.
Extraído de www.hanselmann.com