Configurar el desktop en una máquina Linux en Azure

En un post anterior os hablaba de cómo poder una máquina Linux en Microsoft Azure para poder hostear una aplicación ASP.NET. Continuando con ese post, después de algunas preguntas, os comentaré como podéis configurar la máquina de Azure para poder tener desktop y convertirla en vuestro entorno de desarrollo Linux/ASP.NET con Sublime por ejemplo

Linux02_thumb

En el post anterior ya habíamos creado la máquina virtual linux a través del portal de Azure, configurando ésta para poder conectarnos por SSH….ahora instalaremos el desktop y lo configuraremos para conectarnos por RDP.

LinuxDesktop02

Lo primero, actualizar apt-get para asegurarnos que tenemos las referencias a las últimas versiones de los paquetes a instalar.

sudo apt-get update

LinuxDesktop03

Si quieres instalar xfce4: (el más ligerito y rápido de instalar)

sudo apt-get install xfce4

Si quieres instalar GNOME:

sudo apt-get install ubuntu-desktop

Si quieres instalar KDE:

sudo apt-get install kubuntu-desktop

Yo en mi caso he instalado GNOME.

LinuxDesktop04

Una vez hecho, ya podemos instalar RDP con…

sudo apt-get install xrdp

Una vez instalado, tenemos que crear un nuevo endpoint en la VM para permitir las conexiones RDP. Puerto 3389.

LinuxDesktop05

Y una vez creado, ya podemos conectarnos poniendo el nombre del servidor y el usuario.

LinuxDesktop06

Nos pedirá el usuario y contraseña.

LinuxDesktop12

Y ya podemos ver el desktop.

LinuxDesktop13

Y por supuesto, podremos seguir trabajando con ASP.NET 5 como veíamos en el post anterior o con herramientas como Sublime/OmniSharp/Kulture.

Linux

Desplegar una app ASP.NET 5 en Linux usando Docker

En un post anterior veíamos cómo podíamos ejecutar aplicaciones ASP.NET 5 en un entorno de desarrollo Linux.

En este post veremos cómo podemos desplegar la aplicacación web ASP.NET 5 en una máquinas virtual Linux hosteada en Microsoft Azure usando Docker.

En este caso los pasos los realizaré desde una máquina Linux, pero estas acciones también serían posibles desde un equipo con Windows como veremos en post futuros, ya que las herramientas que a continuación se describen son multiplataforma.

Para empezar, lo primero que necesitemos es tener instaladas las herramientas de líneas de comandos multiplataforma que nos permite realizar labores administrativas sobre Microsoft Azure. Para ello, si tenemos node.js y npm instalado será tan sencillo como lanzar una única línea de comandos:

npm install –g azure-cli

Una vez instaladas, lanzando el comando “azure” podremos ver las diferentes acciones disponibles.

docker01

El siguiente paso es configurar la subscripción contra la que queramos herramientas las acciones. A través de la herramienta podemos descargarnos el perfil de administración e importarlo.

azure account download
azure account import <publish profile>
azure account list

Si dispusiéramos de varias subscriptiones tendríamos que establecer la subscripción por defecto sobre la cual queremos realizar las acciones.

Además de instalar las herramientas de comandos de azure, es necesario instalar el cliente de Docker, en este caso para Linux.

npm install –g docker.io

Una vez ya tenemos el cliente de docker y las herramientas de azure, lanzando una única línea de comandos podemos crear una máquina Linux en Azure con el host de docker instalado:

azure vm docker create -l "Wesrt Europe" -z Small -e 22 myshuttledocker "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04_1-LTS-amd64-server-20140927-en-us-30GB" <user> <password>

A través de este comando estamos diciendo que queremos crear una máquina virtual, indicando el datacenter, el tamaño, la plantilla a usar, el nombre, usuario y contraseña,

Si lanzamos el comando y esperamos unos minutos, podremos tener una nueva máquina en nuestra subscripción.

docker07

docker04

Por defecto, la VM tiene configurado el puerto SSH y el puerto que utiliza el cliente de Docker para conectarse de forma remota al host, cosa que necesitaremos para poder desplegar la aplicación ASP.NET 5.

docker05

A través del comando docker, podemos por ejemplo conectarnos a la VM remota recién creada para ver las imágenes disponibles, que claro está, la primera vez no mostrará ninguna.

docker –tls -H  myshuttledocker.cloudapp.net:4243 images

image

Para evitar tener que poner el servidor en todos los comandos puedes lanzar este comando previamente:

export DOCKER_HOST="tcp://myshuttledocker.cloudapp.net:4243"

Para hacer este post, he descargado la aplicación ASP.NET 5 de MyShuttle, la cuál la podéis encontrar en https://code.msdn.microsoft.com/windowsapps/MyShuttle-demo-applications-1a4b68fe  y está preparada para funcionar con la beta3 de KRE.

El siguiente paso será crear el fichero DOCKERFILE, que será el fichero que contendrá todas las instrucciones para desplegar la aplicación, configurar el entorno y ponerla a funcionar.

En este caso, el script será muy sencillo, tal como éste:

FROM microsoft/aspnet

COPY . /app
WORKDIR /app/MyShuttle.Web
RUN ["kpm", "restore"]

EXPOSE 5004
ENTRYPOINT ["k", "kestrel"]

 

image

En este caso, se usa una plantilla preparada ya para ASP.NET 5. Las diferentes plantillas disponibles se pueden encontrar en https://registry.hub.docker.com 

image

Una vez sabemos la plantilla a utilizar, el fichero DockerFile lo único que indica son los ficheros que deben copiarse y los comandos de ASP.NET 5 necesarios para restaurar las dependencias y arrancar la aplicación, como si lo hiciéramos de forma manual.

Una vez tenemos el fichero, podemos crear la imagen del contenedor en el host de Docker usando este comando:

docker –tls build -t myapp .

Una vez termine este comando (la primera vez tardará porque se descarga la imagen base), podemos ver la imagen ya creada

docker –tls  images

image

Una vez tenemos la imagen del contenedor creada, ya podemos arrancar el contenedor: (5004 es el puerto dónde se arranca la aplicación)

docker –tls run -d -t -p 5004:5004 myapp

Y podemos ver los contenedores que están en ejecución con:

docker –tls ps -a

image

Si queremos comprobar que la aplicación está funcionando, tenemos que crear un nuevo endpoint en la máquina virtual para poder acceder a la aplicación web:

image

Una vez hecho esto, para poder acceder a la aplicación web!

Ubuntu06

Ya para terminar, aunque todavía no está disponible, comentar una cosa muy interesante que Microsoft enseñó el paso Noviembre en el evento Connect y que estamos esperando….desplegar desde Visual Studio aplicaciones ASP.NET 5 con dos clicks en un contenedor de Docker de Linux…desplegar y depurar de forma remota!!

10

21

ASP.NET en Linux usando Azure

En este post mostraré paso a paso cómo es posible preparar desde cero una máquina linux para poder ejecutar aplicaciones ASP.NET.

Para ello, haremos uso de Microsoft Azure, la cuál nos permite crear de forma rápida y sencilla nuestro servidor Linux, en este caso usaremos Ubuntu 14.04 para nuestras pruebas.

Como veréis a continuación, los pasos son prácticamente los mismos que veíamos cuando creábamos una VM con Visual Studio 2015 ya instalado:

Linux01

Seleccionamos la versión que queremos instalar:

Linux02

Establecemos la configuración de la máquina:

Linux03

y después de unos minutos, tendremos la máquina creada y accesible para seguir trabajando sobre ella.

Linux04

Linux05

Linux06

Prerequisitos

Lo primero será instalar los prerequisitos que necesitaremos para los pasos posteriores, lanzando estos comandos:

sudo apt-get install make
sudo apt-get install git autoconf libtool automake build-essential mono-devel gettext mono-complete unzip
sudo apt-get install bash zsh curl

Linux07

El siguiente paso será instalar mono, la versión 3.4.1 o superior.  En el momento de escribir este post la versión de ASP.NET disponible en linux requiere mono, pero dentro de poco verá la luz la versión Core en Linux, la cuál no tendrá dependencia de Mono.

Estos son los comandos necesarios para descargarse y compilar la versión 3.10.0:(Esta operación tardará un buen rato…)

PREFIX=/usr/local
PATH=$PREFIX/bin:$PATH
VERSION=3.10.0
wget
http://download.mono-project.com/sources/mono/mono-$VERSION.tar.bz2
tar -xjvf mono-$VERSION.tar.bz2
cd mono-$VERSION
./autogen.sh –prefix=$PREFIX
make
make install

Una vez instalado mono, tendremos que añadir al store de certificados de mono las URLs a las cuales queremos acceder por SSL.

sudo certmgr -ssl -m https://nugetgallery.blob.core.windows.net
sudo certmgr -ssl -m https://nuget.org
sudo certmgr -ssl -m https://www.myget.org/F/aspnetvnext/

Así mismo podemos configurar evitar tener problemas con certificados no seguros ejecutando el siguiente comando:

mozroots –import –sync

Antes de empezar a instalar KVM, puedes comprobar que tienes la versión adecuada de mono con el siguente comando:

mono –version

Linux13

Instalar KVM

Instalar KVM se puede hacer de forma sencilla ejecutando esta línea de comandos:

curl -SSL https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh && source ~/.kre/kvm/kvm.sh

source /home/ibon/.kre/kvm/kvm.sh

Una vez ejecutada estos comandos, ya tendremos en nuestro entorno el comando KVM, así como una runtime (KRE) por defecto.

Si queremos asegurarnos que tenemos la última versión disponible, lanzaremos este comando:

kvm upgrade

Así mismo, con kvm podremos listar todas las versiones disponibles (kvm list), instalar nuevas versiones (kvm install [version]) o establecer la versión que queremos usar (kvm use [version]) . Si ponéis simplemente “kvm” veréis todos los comandos disponibles.

Linux11

Instalar  Kestrel

sudo apt-get install npm
npm install kestrel-server

Para poder seguir adelante y ejecutar aplicaciones ASP.NET  tendremos que hacer unos pasos adicionales si no queremos ver este error:

Linux14

wget http://dist.libuv.org/dist/v1.0.0-rc1/libuv-v1.0.0-rc1.tar.gz
tar -xvf libuv-v1.0.0-rc1.tar.gz
cd libuv-v1.0.0-rc1/
./gyp_uv.py -f make -Duv_library=shared_library
make -C out
sudo cp out/Debug/lib.target/libuv.so /usr/lib/libuv.so.1.0.0-rc1
sudo ln -s libuv.so.1.0.0-rc1 /usr/lib/libuv.so.1

 

Hello World

Si queremos hacer una prueba rápida de si todo se encuentra instalado de forma adecuada lo más rápido puede ser descargarse alguno de los ejemplos que existen en el repositorio de GitHub de ASP.NET.

Una vez clonado el repositorio puedes ir a cualquiera de los ejemplos, restaurar las dependencias y lanzar la aplicación usando el comando adecuado.

git clone https://github.com/aspnet/Home.git
cd Home/samples/HelloMvc

kpm restore

k Kestrel

Linux15

Si queremos acceder a la web que estamos ejecutando, primeramente tendremos que configurar el endpoint de la máquina virtual para que esté accesible…y una vez hecho, ya podemos abrir nuestro navegador y ver la aplicación funcionando en linux.

5004 es el puerto en el que está configurada la aplicación de ejemplo para arrancarse con el comando Kestrel.

Linux08

http://youserver.cloudapp.net

Linux09

[Evento Sevilla] ALMdeando

Aprovechando que estaré unos días por Sevilla la gente del grupo de usuarios de CartujaDotNet me ha invitado a participar en un evento que han organizado para el día 11 de marzo donde se hablará de integración continua, Xamarin o testing entre otras cosas, temas muy interesantes para todo desarrollador!!

El evento será el 11 de Marzo, miércoles, de 19:00h a 21:00h.

Toda la información y registro la podéis encontrar en http://cartujadotnet.es/almdeando/ 

Agenda.

Utilizando Integración continua con Apps Xamarin (Javier Suárez) (45 minutos)

En esta sesión Javier Suárez nos hablará de integración continua con Apps Xamarin. La integración continua es fundamental en el desarrollo de software, independientemente de la plataforma. Detectar problemas tan pronto como sea posible es una gran victoria, sobre todo en el mundo móvil. Veremos cómo ejecutar pruebas como parte del proceso de Build, que cubren las pruebas unitarias, etc.

Continuous Delivery con Release Management (Ibon Landa) (45 minutos)

En esta sesión veremos qué papel juega Release Management en el ciclo de vida de la aplicaciones y como lo podemos utilizar para implementar de principio a fin un pipeline de release para nuestras aplicaciones.

Después de una introducción a los conceptos más básicos de Continuous Delivery intentaremos ver de la forma más práctica posible la funcionalidad que aporta Release Management.

Making better tests (Juan María Laó Ramos) (30 minutos)

En esta sesión Juanma nos contrará algunos trucos y buenas prácticas que ha aprendido arrastrándose por los barrizales de la programación, más que nada para evitar tener que poner muchas lavadoras después de llegar a casa y tener más tiempo para los suyos.

ASP.NET 5 daily builds

Como todos ya sabéis ASP.NET 5 es open source y es posible acceder al código incluso contruir al mismo a través de sus repositorios de GitHub.

Si habéis seguido el post sobre cómo instalar el entorno con Visual Studio 2015 o cómo instalar las herramientas de líneas de comandos, habréis notado que al resturar las dependencias, éstas se descargan desde https://www.nuget.org/api/v2. siendo éste el sitio dónde Microsoft sube las versiones estables y testeadas de los productos.

   

image

Aunque ASP.NET 5 es open source y se aceptan contribuciones, Microsoft quiere ofrecer el mismo soporte y calidad que ofrece actualmente con cada versión Release del framework, por lo que periódicamente Microsoft une las diferentes versiones, la somote a un proceso de certificación y las sube al repositorio de nuget.org

¿Pero podríamos usar otros repositorios? Por ejemplo, para usar siempre lo último de lo último sobre lo que se está desarrollando?

De forma diaria, las últimas versiones se están subiendo https://www.myget.org, y sólo tenemos que cambiar la URL del repositorio de nuget para que se use la versión que queramos.

https://www.myget.org/F/aspnetmaster/api/v2

Este repositorio contiene las versiones que se generan de forma diaria desde la rama master de GitHub.

https://www.myget.org/F/aspnetrelease/api/v2

Este repositorio contiene las versiones que se generan de forma diaria desde la rama release de GitHub.

https://www.myget.org/F/aspnetvnext/api/v2

Este repositorio contiene las versiones que se generan de forma diaria desde la rama desarrollo de GitHub.

El comando “kpm restore” dispone de un parámetro adicional que nos permite indicarle el repositorio:

kpm restore –s https://www.myget.org/F/aspnetvnext/api/v2


Si queremos cambiarlo de forma global, en Windows, sólo tenemos que abrir una consola y lanzar el siguiente comando:

setx KRE_NUGET_API_URL https://www.myget.org/F/aspnetvnext/api/v2


En MAC y Linux, el comando es similar, pero no igual:

KRE_FEED=https://www.myget.org/F/aspnetvnext/api/v2