viernes, 21 de noviembre de 2014

CÓMO AMPLIAR EL DISCO DE MÁQUINAS VIRTUALES CON KVM

Cuando hacemos pruebas con máquinas virtuales, es posible que tras un tiempo haga falta ampliar el espacio en disco, o bien porque lo hemos dimensionado mal, o bien porque queremos utilizar la máquina para otro propósito. Si utilizamos KVM este procedimiento es muy sencillo. El primer paso es apagar la máquina virtual y después ejecutar este comando:

sudo qemu-img resize nombre-imagen.qcow2 +15G

En este caso estamos ampliando la imagen en 15 GB. En este momento no se soportan reducciones de espacio, tan solo ampliaciones.

Una vez ampliada la imagen, hay que ampliar el sistema de ficheros de la máquina virtual. El procedimiento más sencillo es utilizar GParted. GParted es una herramienta gráfica de gestión de particiones que proporciona una ISO live que se puede utilizar para arrancar la máquina correspondiente.La ISO se puede descargar desde este enlace.

Tan solo hay que configurar la máquina virtual para que arranque desde la ISO de GParted, y una vez arrancado el sistema, podemos hacer el redimensionamiento del sistema de ficheros.

jueves, 6 de noviembre de 2014

PRIMEROS PASOS CON JBOSS FUSE

JBoss Fuse es una de las soluciones de integración proporcionadas por Red Hat. Incluye tres partes fundamentales:
  • Apache CXF para web services
  • Apache Camel para patrones de integración
  • JBoss A-MQ para mensajería
Todo ello corriendo en contenedores OSGi, Apache Karaf.
En el siguiente tutorial vamos a explicar brevemente cómo realizar la instalación y arrancar JBoss Fuse para empezar a trabajar, tanto en modo standalone como utilizando Fabric.

1. DESCARGA DEL PRODUCTO
Todos los productos de Red Hat JBoss Middleware están disponibles para descarga de forma gratuita en JBoss Developer. Concretamente, el software de JBoss Fuse está disponible aquí.

2. INSTALACIÓN
La instalación es tan sencilla como descomprimir el fichero que acabamos de descargar.

3. CONFIGURACIÓN INICIAL
Antes de arrancar el servicio, hay que hacer unos pequeños cambios de configuración.

El primer paso es establecer la variable de entorno JAVA_HOME si no está establecida ya. En Linux, se puede hacer añadiendo la siguiente línea a $HOME/.bash_profile:

export JAVA_HOME=/usr/lib/jvm/java-openjdk

Tras editar el fichero, hay que ejecutar lo siguiente para que se cojan los cambios:

source $HOME/.bash_profile

Por último, hay que configurar usuarios para la consola de administración. Para ello, hay que editar el fichero $FUSE_HOME/etc/users.properties. El formato de estas entradas es el siguiente: usuario=password[,rol1][,rol2]
Para este ejemplo sencillo vamos a utilizar la opción por defecto:

admin=admin,admin

4. ARRANQUE DEL SERVICIO
Después de realizar los cambios en configuración, está todo listo para arrancar JBoss Fuse por primera vez.
Para ello, vamos al directorio $FUSE_HOME/bin y ejecutamos lo siguiente:

./fuse


Por defecto se arranca un contenedor OSGi standalone con una consola de administración. Si desde un navegador accedemos a la url http://localhost:8181 veremos la consola de administración Hawtio.



Podemos acceder a la consola con las credenciales que hemos configurado anteriormente (admin/admin).



Con este contenedor ya podemos empezar a trabajar. Sin embargo, como parte de esta introducción también vamos a crear un Fabric.
Un Fabric consiste en dos tipos de contenedores:

Fabric Server
Un Fabric Server tiene un status especial; es el responsable de mantener una réplica del registro de Fabric. En cada uno de los Fabric servers se instala un servicio de registro. Este servicio, basado en Apache Zookeper, mantiene una réplica de la base de datos de registros y proporciona un Zookeper Server, a cuyos agentes se pueden conectar para recibir datos del registro.  

Fabric Container Un Fabric Container conoce la localización de todos los Fabric Servers, y puede recibir datos de registro de cualquier Fabric Server. Hay un Fabric Agent en cada Fabric Container. Este agente monitoriza de forma activa el registro de Fabric, y cuando se hace cualquier modificación relevante, inmediatamente actualiza el contenedor para mantenerlo consistente con las opciones del registro.

Estos dos tipos de contenedores forman un Fabric Ensemble. Un Fabric Ensemble es una colección de Fabric Servers y Containers que mantienen de forma colectiva el estado del registro de Fabric. El Fabric Ensemble implementa una base de datos replicada y utiliza un sistema de votación basado en quorum para asegurar que los datos del registro permanecen consistentes en todos los contenedores. Para evitar splits debidos a problemas de red en un sistema basado en quorum, es imprescindible que el número de Fabric Servers sea un número impar.
El número de Fabric Servers es típicamente 1, 3 ó 5. En sistemas en producción, el número tiene que ser al menos 3, instalados en máquinas diferentes para proporcionar tolerancia a fallos.
Para añadir Fabric a nuestro ejemplo, tenemos que ejecutar lo siguiente desde la consola de Fuse:

fabric:create --zookeeper-password=admin --wait-for-provisioning


Una vez creado el Fabric, tendremos una nueva vista en la consola de administración, en la cual vemos todos los contenedores existentes, y que nos permite crear nuevos contenedores:


En siguientes tutoriales iremos mostrando diferentes ejemplos de aplicaciones que podemos crear utilizando JBoss Fuse. 




viernes, 3 de octubre de 2014

PRIMEROS PASOS CON AEROGEAR UNIFIED PUSH SERVER

Aerogear es un conjunto de librerías que simplifican y unifican el desarrollo de aplicaciones para dispositivos móviles en diferentes plataformas: Web, iOS, Android y aplicaciones sin código nativo (Cordova). Una de las cosas que proporciona Aerogear es soporte para notificaciones push en Google Cloud Messaging, Apple APN y Mozilla Simple Push mediante Aerogear Unified Push Server. En el siguiente tutorial vamos a desarrollar un ejemplo en el que montaremos un servidor en OpenShift Online para enviar notificaciones a través de Google CloudMessaging, e implementaremos una aplicación en Android que recibirá estas notificaciones. Está basado en este tutorial, con detalle de las secciones que no están explicadas.  

1. INSTALACIÓN DEL SERVIDOR
El servidor de Aerogear a través del cual enviaremos las notificaciones estará en OpenShift Online. OpenShift es la PaaS de Red Hat, en la que podemos crear una cuenta gratuita que nos permite desplegar hasta tres aplicaciones. El primer paso es crear una cuenta en OpenShift Online. Para ello sólo es necesario introducir una dirección de email y un password. Una vez en nuestra cuenta, podemos crear una aplicación. Al crear una aplicación, aparece el catálogo de aplicaciones o cartridges disponibles, en el que seleccionaremos AeroGear Push 0.X.


 
En el formulario que aparece, debemos introducir un valor en el campo Public URL, que será la URL de acceso a nuestro Push Server. En este ejemplo vamos a utilizar el nombre aerogear. El resto de las opciones las dejamos por defecto y creamos la aplicación. Al terminar el proceso, aparece una pantalla con los datos de acceso al servidor que acabamos de crear.



El siguiente paso es ir a la página principal de nuestra aplicación, haciendo clic en Continue to the application overview page. En esta página, podemos ver las tecnologías que estamos utilizando, Aerogear y una base de datos MySQL. En el caso de que quedamos administrar la base de datos MySQL, podemos añadir phpMyAdmin a nuestra aplicación. Haciendo clic en el nombre de la aplicación, nos redirige a nuestro servidor Aerogear.



En esta pantalla debemos introducir las credenciales por defecto que se han mostrado anteriormente, y el sistema nos solicitará que cambiemos el password para activar la aplicación. Las credenciales por defecto son admin/123. Una vez actualizado el password, podemos ver la página principal de nuestro servidor.


  

2. CONFIGURACIÓN DE CUENTA DE GOOGLE
Para poder utilizar Google Cloud Messaging, necesitamos registrarnos como desarrollador de Google. Para ello vamos a necesitar tener una cuenta de Google. Los pasos a seguir son los siguientes:
  1. Acceder a Google Cloud Console y crear un proyecto nuevo.
  2. Apuntar el project number que aparece. Esto nos servirá después para configurar el Sender ID.
  3. Activar las Android APIs, navegando a APIs & auth -> APIs y activando el elemento Google Cloud Messaging for Android.
  4. Ir a APIs & auth -> Credentials y hacer clic en CREATE NEW KEY y luego Server Key. En la siguiente pantalla simplemente seleccionamos Create.
Estos pasos están explicados con todo detalle en este enlace.  

3. CONFIGURACIÓN DEL SERVIDOR
El siguiente paso es configurar el servidor con los datos de la aplicación que hemos creado en Google.
  1. En la sección Applications, creamos una nueva aplicación haciendo clic en Create Application. En este ejemplo, le damos el nombre demo y una descripción.
  2. Una vez creada la aplicación, hacemos clic en su nombre y creamos un nuevo Variant haciendo clic en Add Variant. Para rellenar el formulario, debemos introducir el Client ID y el Project Number que hemos creado en Google.
Este procedimiento está detallado en este enlace.  

4. CONFIGURACIÓN DEL ENTORNO DE DESARROLLO
En este ejemplo vamos a utilizar como entorno de desarrollo JBoss Developer Studio, que es la plataforma proporcionada por Red Hat para trabajar con todo el portfolio de productos de JBoss Middleware. Está basado en Eclipse e incluye todos los plugins de JBoss Tools. JBoss Developer Studio se puede descargar de forma gratuita desde JBoss Developer. En el ejemplo se ha utilizado la versión 7.1.1.

1. Descarga de Android SDK
La SDK de Android se puede descargar desde aquí. Una vez finalizada la descarga, hay que configurar qué modulos y qué versiones de la API se quiere instalar. Para ello ejecutarmos el script android que se encuentra en el directorio tools de la SDK.



Hay que instalar lo siguiente:
De la sección Tools:
  • Android SDK Tools
  • Android SDK Platform-tools
  • Android SDK Build-tools
De las APIs que queramos (yo he utilizado L):
  •  SDK Platform
  • ARM EABI v7 System Image
  • Intel x86 Atom System Image
De la sección Extras:
  • Android Support Repository
  • Android Support Library
  • Google Play Services (este último nos sirve para utilizar Google Cloud Messaging)
 2. Configuración del plugin ADT para JBoss Developer Studio/Eclipse
Para instalar el plugin necesario para aplicaciones Android, sólo hay que seguir las instrucciones de este enlace.
Para impacientes, el repositorio es https://dl-ssl.google.com/android/eclipse/ y hay que configurar la ruta del SDK descargado previamente.

3. Creación de proyecto Google Play Services
Para poder utilizar la librería Google Play Services, que nos permite acceder a la Cloud de Google, debemos importar el proyecto en Eclipse. Para ello, hay que copiar en el directorio en el que estemos trabajando el proyecto que se encuentra en <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib. Es importante utilizar una copia y no el proyecto original que hemos descargado. Para importar el proyecto en nuestro workspace seleccionamos File -> Import -> Android -> Existing Android Code into Workspace.
Este proyecto librería es necesario para poder utilizar las librerías de aerogear-android.

4. Creación de proyecto Aerogear Android
El siguiente paso es hacer un proceso similar pero con las librerías de Aerogear. Para descargar el código de Aerogear y sus dependencias, ejecutamos los siguientes comandos:
git clone https://github.com/aerogear/aerogear-android
cd aerogear-android
git checkout tags/1.4.0
mvn dependency:copy
Después debemos añadir la librería de Google Play como dependencia de este proyecto. Para ello podemos modificar el fichero project.properties añadiendo la siguiente línea:
android.library.reference.1=../google-play-services_lib O lo podemos hacer a través de las herramientas de Eclipse como se explica aquí.
También tenemos que marcar este proyecto como librería, añadiendo la siguiente línea en fichero project.properties:
android.library=true

CREACIÓN Y PRUEBA DE LA APLICACIÓN
La aplicación cliente la creamos a partir de este tutorial, recordando añadir el proyecto de Aerogear como dependencia, de la misma forma que lo hemos hecho en el paso anterior con las librerías de Google. El proceso de prueba de la aplicación está documentado aquí





REFERENCIAS
Saga Blog
Aerogear Unified Push Server Tutorial
Android Developers

BIENVENIDO

Nace JBoss Iberia, un blog dedicado a tecnología de Red Hat JBoss, en la que publicaremos novedades y tutoriales, todo en castellano.