Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. http://www.apartamentoenfamilia.es. Número registro HUTT-005768

lunes, 30 de junio de 2014

Instalando Juju para orquestrar nuestra nube (MAAS, Amazon Web Services, EC2, etc..).

Juju (antes Ensemble) es una herramienta de gestión de orquestación de servicios desarrollada por Canonical Ltd.. Es un proyecto de código abierto presentado en Launchpad1 y liberado bajo la licencia pública general de Affero (AGPL).2
Juju se concentra en la noción del servicio, abstrayendo la noción de la máquina o el servidor, y define las relaciones entre aquellos servicios que son actualizados automáticamente cuando dos servicios relacionados observan una modificación notable.3 Esto permite subir o bajar escaladamente los servicios fácilmente a través de la llamada de un simple comando. Por ejemplo, un servicio web denominado Charm tiene una relación4 establecida con un equilibrador de carga puede subirse horizontalmente con una simple orden de "añadir unidad"5 sin tener que preocuparse de volver a configurar el equilibrador de carga para declarar las nuevas instancias: las relaciones basadas en eventos del Charm se encargará de eso.
Los Charms de Juju pueden ser escritos en cualquier lenguaje ejecutable.6
Así pues, vamos a empezar a instalar esta maravilla:

Lo primero es crearnos unas claves para conexiones SSH de juju con los nodos. Podéis encontrar más información en http://eithel-inside.blogspot.com.es/2010/01/autenticacion-ssh-mediante-certificado.html :

usuario@juju$ ssh-keygen
Una vez instaladas las claves miremos de instalar los paquetes (siguiendo las instrucciones de https://juju.ubuntu.com/install/ ya que pese a que en los repositorios de la distro 14.04 LTS ya esta incorporado, es aconsejable añadir los repositorios del proyecto que estan más actualizados):
sudo add-apt-repository ppa:juju/stable
sudo apt-get update && sudo apt-get install juju-core


Con esto ya tenemos instalado juju. Ahora quedará configurar un entorno de trabajo. Lo haremos mediante el archivo ~/.juju/environments.yaml . Lo que haremos es generar el archivo y luego modificarlo con nuestras opciones particulares:

usuario@juju:~$ juju generate-config
A boilerplate environment configuration file has been written to /home/csi/.juju/environments.yaml.
Edit the file to configure your juju environment and run bootstrap.



En este ejemplo voy a configurar Juju para orquestrar una nube hecha con MAAS para dar continuidad a artículos anteriores (http://eithel-inside.blogspot.com.es/2014/06/instalando-un-cluster-maas-en-ubuntu.html), no obstante podría hacerse con hpcloud, amazon, joyent, azure, etc:

Modificamos la linea que pone default: amazon por default: maas . (no es obligatorio pero ya que lo encaramos a orquestrar MAAS, vamos a facilitarnos las cosas).

Luego modificamos las lineas :
maas-server: 'http://192.168.1.1/MAAS/'
maas-oauth: ''

Aquí pondremos la IP de nuestro nodo maestro MAAS y la clave que podemos obtener siguiendo estos pasos:
Vamos a las preferencias de la página MAAS http://${my-maas-server}:80/MAAS/ y le damos a Preferences desde el menú desplegable que aparecerá cuando clicamos a nuestro nombre de usuario (arriba a la derecha de la página). Copiamos la clave del apartado MAAS keys .

Si hacemos esto, ya podemos irlo probando:

juju status
ERROR Unable to connect to environment "maas".
Please check your credentials or use 'juju bootstrap' to create a new environment.

Error details:
environment is not bootstrapped


Bien, no tenemos errores de configuración y lo que nos dice es que tenemos que hacer el arranque (bootstrapping) de nuestro entorno:

Primero sincronizamos herramientas:
juju sync-tools

*Antiguamente era juju --sync-tools, pero ahora ya no.

Luego ya podemos hacer el bootstrap:

juju bootstrap

A mi usualmente me da un error siempre:
ERROR waited for 10m0s without being able to connect: /var/lib/juju/nonce.txt does not exist

El caso es que en el nodo en donde mira de hacer bootstrap no existe ese archivo. Hay que crearlo con y poner esto:
user-admin:bootstrap

Si todo nos funciona bien veremos algo como:
(...)
Bootstrapping Juju machine agent
Starting Juju machine agent (jujud-machine-0)


En este instante ya podríamos decir que tenemos juju instalado y listo para orquestrar nuestros servicios. Hay que recordar que juju mira de definir las aplicaciones como servicios de manera que nos abstrae de instalar programas y sus relaciones, así como de 'donde' se instalan estos servicios (programas).
Así como antes hiciéramos, podemos ver el estado:

juju status
environment: maas
machines:
  "0":
    agent-state: started
    agent-version: 1.18.4
    dns-name: bw4wb.maas

    instance-id: /MAAS/api/1.0/nodes/node-01f3f58a-fdf2-11e3-98d2-00160a07b596/
    series: trusty
services: {}


Ahora nos quedaría desplegar servicios. Como ejemplo vamos a desplegar el juju-gui, que es un panel que podremos acceder via web y manejar las cosas más habituales de juju de manera gráfica:

juju deploy juju-gui
juju expose juju-gui


¡Ya esta! Es así de mágico. Tenemos desplegado el servicio juju-gui. Como observación decir que si queremos desplegar el servicio en un nodo en cuestión, lo podemos especificar en el momento del deploy:

juju deploy juju-gui --to 0

Si ahora vemos el estado de juju:

juju status
environment: maas
machines:
  "0":
    agent-state: started
    agent-version: 1.18.4
    dns-name: bw4wb.maas

    instance-id: /MAAS/api/1.0/nodes/node-01f3f58a-fdf2-11e3-98d2-00160a07b596/
    series: trusty
services:
  juju-gui:
    charm: cs:trusty/juju-gui-3
    exposed: false
    units:
      juju-gui/0:
        agent-state: started
        agent-version: 1.18.4
        machine: "0"
        open-ports:
        - 80/tcp
        - 443/tcp
        public-address: bw4wb.maas


Con lo que vemos que juju-gui es accesible mediante http://bw4wb.maas:80 o 443


Este vídeo es un ejemplo de instalación de OpenStack mediante Juju-GUI:
 


Enlace de interés:

viernes, 27 de junio de 2014

Instalando un cluster MAAS en Ubuntu 14.04 LTS

Los usuarios de Ubuntu Server tienen acceso a la herramienta de configuración MAAS (acrónimo de Metal como un Servicio), trayendo el dinamismo de la computación en la nube al mundo de la provisión física.

Según Canonical, MAAS apoya el despliegue de infraestructuras como OpenStack, Hadoop, CloudStack, Load Balanced Web y Cloud Foundry. También gestiona servidores como un recurso similar a la nube que se asignan bajo demanda.

Los servidores se asignan fácilmente a MAAS mediante una inscripción automática y luego MAAS es responsable de todos los aspectos de mantenimiento de los servidores físicos, como actualizaciones de firmware, pruebas burn-in, evaluación del rendimiento y otras operaciones similares.

(Fuente Softpedia)



La instalación es muy sencilla. Al arrancar nuestra imagen de Ubuntu Server nos preguntará que tipo de instalación queremos y le diremos "Create a new MAAS on this server".

No voy a poner lo que ya esta fácilmente accesible por la web. En resumen hay que seguir los pasos que nos pone la página oficial:



Una vez instalado el nodo master MAAS podremos acceder con nuestro navegador mediante la URL: http://ip_nuestro_servidor/MAAS 

En ese punto nos pedirá que creemos un usuario.

sudo maas-region-admin createsuperuser
[sudo] password for eddy:
Username (leave blank to use 'root'):
Email address: micorreo@electronico.es
Password:
Password (again):
Superuser created successfully.

Es importante que todos los pasos de la documentación que hagamos mediante sudo lo hagamos tal cual. No hacer sudo -s y luego todo como root. No, mejor tal cual nos lo dicen. No es lo mismo crear un archivo como usuario con acceso a sudo que hacerlo directamente como root. En definitiva, haced caso literal a lo que los manuales os dicen.

Luego de crear el superusuario de MAAS, tendremos que importar las imágenes de arranque (para la instalacion de los nodos). Esto se hace con el botón Import Boot Images:




En la consola de nuestro MAAS Master Cluster veremos en los procesos esto:

sudo -n -E maas-import-pxe-files
  \_ /usr/bin/python2.7 /usr/sbin/maas-import-pxe-files

Una vez tengamos las imágenes de arranque descargadas nos faltará configurar el Nodo Master para que tenga una tarjeta de red que sea para la comunicación y aprovisionamiento de los nodos (Managed Interfaces), la cual dotará de los servicios DNS y/o DHCP a los nodos. Puede ser la misma tarjeta de red con la que nos conectamos al Controlador, pero yo aconsejaría tenerlo separado, tanto por concepto como por rendimiento. 

Podemos mirar de actualizar nuestro servidor MAAS agregando los repositorios de Ubuntu Cloud, ya que tienen las versiones más actualizadas y estables:

sudo add-apt-repository cloud-archive:tools
sudo apt-get update && sudo apt-get upgrade


Ahora ya estamos en disposición de añadir nuevos nodos (nuevos servidores físicos en donde instalaremos de forma automática Ubuntu). ¿Cómo? pues podemos hacerlo manualmente o automáticamente. Lo fácil y aconsejable es hacerlo automáticamente. Para ello configuramos la BIOS del nodo que queramos añadir a nuestro Cluster para que se encienda en WakeOnLan (o algún otro servicio de autoencendido compatible) y que arranque por LAN (PXE). En artículos anteriores os explicaba estos conceptos:
Así que si tenemos los nodos en una red en el que el Master Cluster MAAS dota de arranque PXE, DNS y DHCP, ya podemos empezar a meter nodos. Llegados a este punto os aconsejo leer http://maas.ubuntu.com/docs1.5/nodes.html#auto-enlist .

Como querremos entrar en nuestros nodos, es util crear un certificado para poder entrar automaticamente desde ssh. En un artículo anterior os explicaba como hacerlo: http://eithel-inside.blogspot.com.es/2010/01/autenticacion-ssh-mediante-certificado.html

Una vez generado el certificado (de usuario, no con sudo o root), tenemos que copiar el contenido del archivo ~/.ssh/id_rsa.pub y copiarlo enteramente en el apartado de root=> preferences => add ssh key




Una vez hemos arrancado nuestro nuevo nodo (nuevo servidor físico) veremos que arranca por PXE, que hace unas serie de operaciones y luego se para. Bien, pues una vez hecho esto, veremos que nos aparece en la pestaña de Nodes:


Pues bien, ahora que ya nos ha autodetectado el nodo, tenemos que hacer el Comission del nodo clicando al nodo en cuestión y luego dándole a Comission node:


Como inciso, deciros que si quereis que los nodos tengan salida a Internet, igual tenemos que hacer IP Forwarding con el nodo Master (dependiendo de como hayamos ideado nuestra red). En un artículo anterior os explicaba como : http://eithel-inside.blogspot.com.es/2011/03/ip-forwarding-con-linux.html

Después de reiniciarse algunas veces, nuestro nodo quedará en el estado de Ready. Eso quiere decir que esta todo preparado para instalar ubuntu en el nodo. Le damos al botón Start y ya tendremos nuestro nodo.

Ahora la idea seria ir añadiendo nodos a nuestro cluster según la necesidad de hardware que tengamos.




Troleando Ubuntu Vs Gnome


lunes, 23 de junio de 2014

Instalando OpenStack IceHouse mediante DevStack en Ubuntu 14.04 LTS

OpenStack es un proyecto de computación en la nube para proporcionar una infraestructura como servicio (IaaS). Es software libre y de código abierto distribuido bajo los términos de la licencia Apache. El proyecto está gestionado por la Fundación OpenStack, una persona jurídica sin fines de lucro creada en septiembre de 2012 para promover el software OpenStack y su comunidad.1 2

(Fuente Wikipedia)

También os quiero presentar DevStack, un conjunto de scripts en bash que nos ayudan muchísimo a desarrollar un entorno OpenStack

Así pues, vamos a explicar los pasos para instalar OpenStack en un Ubuntu 14.04 mediante DevStack:


Primero nos descargamos el programa devstack:

git clone https://github.com/openstack-dev/devstack.git

y veremos algo así:

Clonar en «devstack»...
remote: Reusing existing pack: 18506, done.
remote: Counting objects: 28, done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 18534 (delta 13), reused 3 (delta 0)
Receiving objects: 100% (18534/18534), 4.96 MiB | 2.54 MiB/s, done.
Resolving deltas: 100% (12711/12711), done.
Checking connectivity... hecho.



(* si no tenemos git cliente instalado, lo podemos hacer mediante sudo apt-get install git)

Una vez descargado, se recomienda una mínima configuración especial para nuestro entorno. Dentro de la carpeta samples tenemos un ejemplo de configuración. Lo podemos copiar a la raíz de nuestra carpeta devstack y luego modificarla según nos interese:

usuario@OpenStack:~/devstack/samples$ cp -a local.conf ..



Y finalmente comenzar la instalación:

cd devstack; ./stack.sh

Después de un rato viendo como instala paquetes y los configura, al final veremos algo como esto:

Horizon is now available at http://84.88.68.153/
Keystone is serving at http://84.88.68.153:5000/v2.0/
Examples on using novaclient command line is in exercise.sh
The default users are: admin and demo
The password: MySuperWoWPass
This is your host ip: 84.88.68.153

Así pues, nos quedará probar si la magia de DevStack ha dado resultado conectando a la URL que nos ha reportado.


Más info en:

martes, 17 de junio de 2014

Solucionar el problema "add-apt-repository: command not found"



En ocasiones tenemos que añadir algun repositorio extra para trabajar con una versión específica. Es entonces cuando el comando add-apt-repository nos puede ser util. No obstante, puede que no lo tengamos instalado y:



sudo add-apt-repository ppa:juju/stable
[sudo] password for username:
sudo: add-apt-repository: command not found



Según en otros comandos cuando no lo encuentra el sistema te aconseja que debes instalar, en este caso no te dice nada. Simplemente que no lo encuentra. La solución en Ubuntu 14.04 es:

sudo apt-get install software-properties-common

En versiones anteriores funcionaba haciendo :

sudo apt-get install python-software-properties 

That u don't know what you've got 'til it's gone