Uno de los temas más actuales y solicitados son los servicios en la nube, uno de los que más ejemplifica el uso de éstos es Netflix: con este servicio podemos ver alguna película o serie en casa, pausar la reproducción, movernos a otra localidad y, mediante algún dispositivo móvil (Teléfono o Tableta) continuar en el mismo punto donde nos quedamos, para, incluso, terminar de verla en algún tercer dispositivo diferente (Laptop, PC o consola de videojuegos).
Utilizando las bondades que actualmente se proveen en internet con OpenSource, podemos garantizarnos diferentes servicios de nube administrados por nosotros mismos.
Antes de entrar en materia, recordemos que la nube, como tal, es un concepto demasiado amplio y abarca casi todos los posibles tipos de servicio en línea, pero cuando las empresas se refieren a la nube, por lo general hay tres modelos de servicios que hay que considerar: el software como servicio (SaaS), Plataforma como Servicio (PaaS) e Infraestructura como Servicio (IaaS).
Básicamente, se resumen como:
Como IaaS, la forma más simple de verlo es como la virtualización de Sistemas Operativos, pudiendo ser de forma local (en nuestra propia máquina) o con algún proveedor de este servicio en la nube (por ejemplo Amazon, Rackspace ó Digital Ocean).
Con éste último, mediante un cupón en Twitter, pude hacerme de un droplet para iniciar este proyecto, las características que configure para iniciar son: Fedora 19, 1 vCPU, 1 GB RAM y 30 GB en SSD:
Después de unos pocos segundos, me llego el correo con el acceso por SSH y procedí a actualizarlo:
[root@fedora19 ~]# yum update
Cuando terminó, habilite SELinux, ya que viene por default deshabilitado y después reinicie el droplet :
[root@fedora19 ~]# cat /etc/sysconfig/selinux SELINUX=enforcing SELINUXTYPE=targeted [root@fedora19 ~]# reboot
Para hacerlo disponible en cualquier dispositivo, es muy recomendable conseguir un nombre de dominio. Se pueden encontrar opciones muy económicas en un rato de googleo.
Lo siguiente es construir un PaaS para que albergue nuestros servicios.
Para nuestro PaaS, utilizaremos OpenShift el cual nos puede proporcionar diferentes opciones de lenguajes para crear nuestras aplicaciones; para instalarlo, podemos utilizar dos alternativas, descargar la imagen lista para funcionar en KVM, VirtualBox y VMWare, ó, como en mi caso, realizar la instalación de los paquetes necesarios. Utilizaremos, entonces, la guía de instalación mediante Puppet :
[root@fedora19 ~]# yum install -y puppet facter tar bind [root@fedora19 ~]# mkdir -p /etc/puppet/modules [root@fedora19 ~]# puppet module install openshift/openshift_origin --version 3.0.1 [root@fedora19 ~]# /usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -n USER -r /dev/urandom -K /var/named example-rh.com
Mi script de configuración de puppet quedó como:
[root@broker ~]# cat configure_origin.pp class { 'openshift_origin' : # Components to install on this host: roles => ['broker','named','activemq','datastore','node'], # The FQDNs of the OpenShift component hosts; for a single-host # system, make all values identical. broker_hostname => 'broker.example-rh.com', node_hostname => 'broker.example-rh.com', named_hostname => 'broker.example-rh.com', datastore_hostname => 'broker.example-rh.com', activemq_hostname => 'broker.example-rh.com', # BIND / named config # This is the key for updating the OpenShift BIND server bind_key => 'AWk+wjszKi9da5nL/1gkMY7H+GuUng==', # The domain under which applications should be created. domain => 'example-rh.com', # Apps would be named -.example-rh.com # This also creates hostnames for local components under our domain register_host_with_named => true, # Forward requests for other domains (to Google by default) conf_named_upstream_dns => ['8.8.8.8'], # Auth OpenShift users created with htpasswd tool in /etc/openshift/htpasswd broker_auth_plugin => 'htpasswd', # Username and password for initial openshift user openshift_user1 => 'openshift', openshift_password1 => 'password', # To enable installing the Jenkins cartridge: install_method => 'yum', jenkins_repo_base => 'http://pkg.jenkins-ci.org/redhat', #Enable development mode for more verbose logs development_mode => true, # Set if using an external-facing ethernet device other than eth0 #conf_node_external_eth_dev => 'eth0', #If using with GDM, or have users with UID 500 or greater, put in this list #node_unmanaged_users => ['user1'], } [root@broker ~]#
NOTA: También se podría utilizar el script de instalación automática provisto en https://install.openshift.com/, pero, durante mis pruebas, se quedaba colgado sin posibilidad de hacerle un buen debug, por lo que me decidí por utilizar la guía mencionada.
Al finalizar la instalación es recomendable reiniciar el droplet/vps para que todos los servicios inicien correctamente:
[root@fedora19 ~]# reboot
Aquí el log de instalación.
Cuando ha reiniciado nuestro droplet/vps, podemos verificar que OpenShift este ejecutándose correctamente:
En nuestro equipo de administración, instalamos las herramientas rhc y git para poder administrar nuestras aplicaciones desde la terminal:
[root@isengard ~]# yum -y install git rubygem-rhc
Configuramos el acceso con el comando:
[alex.callejas@isengard ~]$ rhc setup --server fedora19 -l openshift
Una vez configurado, instalamos una aplicación de prueba, hagamos un blogcito con wordpress.
Primero crearemos un directorio local para nuestras aplicaciones:
[alex.callejas@isengard ~]$ mkdir Devel/BLOG [alex.callejas@isengard ~]$ cd Devel/BLOG
Una vez ahí podemos iniciar la instalación de wordpress, la cual es muy sencilla, únicamente cambiemos un poco el comando para instalarlo con MariaDB en lugar de MySQL:
[alex.callejas@isengard BLOG]$ rhc app create blog php-5 mariadb-5.5 --from-code=https://github.com/openshift/wordpress-example
Un par de minutos después, ya la podemos ver dentro de nuestras aplicaciones:
Configuramos nuestro sitio y enseguida lo podremos ver funcionando:
Después de un poco de personalización y afinación de los registros en el DNS, el blog quedo de esta forma:
Posteriormente, veremos como agregar más aplicaciones y proyectos a nuestra nube.
Espero les sirva…
[…] el post anterior construimos una nube privada con algunos recursos encontrados en Internet, uno de los paradigmas de […]
[…] el post anterior construimos una nube privada con algunos recursos encontrados en Internet, uno de los paradigmas […]