Ikasten.IO
Learning, Aprendiendo

Openshift: computación gratuita en la nube de RedHat 25 enero, 2012

OpenShift Express es una plataforma (PaaS) gratuita para el despliegue de aplicaciones en la nube proporcionada por RedHat. En ella podremos desplegar aplicaciones Java, Perl, PHP, Python y Ruby.  Además, permite la instalación (también gratuita) de un servidor de bases de datos como MySQL, Postgres o MongoDB.  El procedimiento es bastante simple: al abrir una cuenta, OpenShift te generará una URL única para tu aplicación y un repositorio git asociado.  Tus desarrollos se guardarán en git de tal forma que al hacer git push , automáticamente, aparte de subir tus cambios al repositorio remoto, estarás dando una orden de despliegue de la aplicación (internamente lo hace a través de hooks o ejecución de scripts ante eventos como un git push)

Dejo esbozados aquí los pasos necesarios para crear una cuenta, desplegar tu propia BBDD MySQL y subir un pequeño script PHP que hace uso de dicha base de datos:

1) Darte de alta en OpenShift Express (existe otra modalidad de pago, llamada Openshift Flex, para usuarios con necesidades más avanzadas)

2) Entrar en el panel de control de Express

3) Crear un namespace (la URL de tus aplicaciones siempre serán del tipo  nombreaplicacion-namespace.rhcloud.com). En la imagen superior he creado un namespace = babelium

4) Crear una aplicación de tipo Java, PHP, Python, Ruby o Perl. En mi ejemplo el nombre de la aplicación es “demo” (tras mucho estrujarme los sesos 😉 y se trata de una aplicación PHP.

Como puede verse en la imagen, tras el paso 4 se creará un repo git en la dirección ssh://xxxxxx@demo-babelium.rhcloud.com/~/git/demo.git/

5) Opcional: para poder acceder por ssh a nuestra instancia (sí! tenemos acceso ssh gratuito!) subimos la parte pública de nuestra clave RSA ( normalmente la tendrás situada en  ~/.ssh/rsa_id.pub )

6) Clonamos el repo git del paso 4

Bien… ¿me sigues? Ok, los pasos que he comentado hasta ahora (crear namespace, nombre de aplicación, asociar la aplicación a un entorno PHP, etc. se puede hacer desde la línea de comandos. Para ello, debes instalar las utilidades rhc (RedHat Cloud) que son scripts en Ruby (gemas) para control remoto de las aplicaciones en Openshift. Desde Ubuntu basta con que hagas:

Ojo con el path, igual en tu máquina las gemas rhc no se instalan exactamente en la misma ruta, ¡échale un vistazo antes!

¿Por dónde íbamos? Ah! sí, por el paso 7 🙂

7) Bien, vamos a instalar soporte MySQL en nuestro entorno. Para ello, ahora sí desde la línea de comandos, porque el panel de control por ahora no ofrece la opción de hacerlo vía point&click:

Olé! MySQL 5.1 instalado por la patilla… y ¿qué es eso de que incruste phpmyadmin? No me digas que también lo tengo por el mismo precio! Pues así es amigos… 🙂 De hecho, tengo varios cartuchos (cartridges le llaman en RHC) disponibles:

Olé y olé… jenkins… mmmmmhhh… eso lo dejo para otro día 🙂 Por ahora vamos a instalar phpmyadmin.

Acabamos de enganchar a nuestra aplicación demo un phpmyadmin-3.4 . Para los que se acuerden de artículos anteriores de DiarioLinux, esa sintaxis le sonará al entorno juju de Ubuntu. El login y pass será el mismo que te han dado para MySQL. La URL de acceso también la tendrás al ejecutar el comando anterior.

Nota: teniendo phpMyAdmin, crear las tablas en la BBDD es trivial. Pero existen otras formas de hacerlo (sin usar phpMyAdmin). Una de ellas en entrar por ssh a tu instancia y crear las tablas desde la línea de comandos mysql, pero otra forma más elegante es usar un hook de git. En concreto, en tu repo tendrás un directorio .openshift, y dentro del mismo un subdirectorio llamado action_hooks. Lo que hay ahí son scripts que se ejecutan en distintos momentos tras hacer un git push. El script deploy es el más adecuado para generar tus tablas y poblar con tuplas las mismas. Edita ese script (/opt/demo/.openshift/action_hooks) así (gracias a schabell.org por enseñarnos a hacerlo):

Como ves existen algunas variables de entorno predefinidas: $OPENSHIFT_DB_HOST (dirección del host que alberga tu MySQL), $OPENSHIFT_DB_NAME (nombre de la base de datos de tu aplicación), etc. Como digo son variables predefinidas, ya tienen el valor correcto asignado sin que tú hagas nada. El script bash anterior, lo que hace es comprobar que tienes mysql instalado en OpenShift (y en caso de no tenerlo lo instala), que tienes la BD instalada (si no, la crea también) y que la has cargado con tuplas (y si no, la carga, leyendo del dump baby.sql situado en el mismo directorio que el script). El dump baby.sql lo tienes que crear previamente, claro, con instrucciones SQL de creación de tablas e inserción de tuplas. Por ejemplo:

Tus scripts en PHP serán como siempre han sido, no hay ningún cambio salvo las variables de entorno predefinidas que en un entorno php “normal” no existen y en Openshift sí. Por tanto, en la carpeta /opt/demo/php podrías crear un script php para conectar con tu BBDD:

Ahora, desde la línea de comandos lanzas un “git push” y verás como el servidor despliega tu aplicación, ejecuta el script de creación de tablas y tuplas mysql (creándolas en caso necesario) y te deja la URL lista para ser usada: http://demo-babelium.rhcloud.com/

Espero que no os guste demasiado este post, no vaya a ser que OpenShift se sature 😉
[Nota: ha sido un post largo y con aplicación práctica inmediata, para compensar el mes largo sin actualizaciones 😉 ]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *