Instalando Openstack

He estado jugando estos últimos dias con OpenStack, una plataforma IaaS de código abierto que nos permite la creación de recursos de computación (OpenStack Nova) y almacenamiento (OpenStack Swift) en la nube. El proyecto, liderado originalmente por Rackspace y la Nasa, y a los que se les han añadido últimamente una importante comunidad de desarrolladores, fue creado hace tan solo unos pocos meses (Diego nos explica en su blog la historia de este proyecto), y aunque a dia de hoy sigue estando inmaduro, la última versión liberada (Bexar) ya comienza a ser “usable”.

Si os animais a probarla, os detallo a continuación los pasos que hay que seguir para su instalación, aunque podeis encontrar mucha más información en la wiki o en los manuales del proyecto.

En primer lugar vamos a añadir el repositorio PPA de Launchpad. En mi caso, como me gusta jugar con fuego, voy a utilizar el repositorio donde se encuentran los paquetes “bleeding edge”, es decir, el repositorio donde se encuentran los últimos commits que se hayan hecho sobre el tronco:

~$ sudo apt-get install python-software-properties
~$ sudo add-apt-repository ppa:nova-core/trunk
~$ sudo apt-get update

(en caso de que querais utilizar la última versión estable, cambiad el ppa:nova-core/trunk por ppa:nova-core/release)

A continuación instalamos el paquete de nova junto con sus dependencias (es importante instalar primero el servidor de RabbitMQ):

~$ sudo apt-get install rabbitmq-server
~$ sudo apt-get install nova-common nova-doc nova-api nova-network nova-objectstore nova-scheduler nova-compute
~$ sudo apt-get install euca2ools unzip

El siguiente paso es configurar el paquete. En general, podeis dejar los ajustes por defecto (que se encuentran en /etc/nova/nova.conf), aunque en mi caso he tenido que realizar una pequeña modificación: si ejecutais el software en una máquina virtual (por ejemplo VirtualBox o Parallels), será necesario añadir al archivo nova.conf la siguiente línia:

--libvirt_type=qemu

Antes de comenzar a jugar, vamos a reiniciar por si acaso el servicio libvirt (la interfaz para interactuar con diferentes tecnologías de virtualización):

~$ sudo service libvirt-bin restart

Acto seguido configuramos una red para nuestras máquinas virtuales. En este caso utilizaremos la dirección CIDR 10.0.0.0/8, sobre la que crearemos 1 red virtual con 64 direcciones IP:

~$ sudo nova-manage network create 10.0.0.0/8 1 64

Ahora nos creamos un usuario (ferdy) y un proyecto (miproyecto), nos descargaremos las credenciales (que vendrán empaquetadas en el archivo nova.zip) y cargaremos en nuestro profile de usuario las variables necesarias para interactuar con el proyecto:

~$ cd
~$ mkdir proyecto-nova
~$ cd proyecto-nova
~/proyecto-nova$ sudo nova-manage user admin ferdy
~/proyecto-nova$ sudo nova-manage project create miproyecto ferdy
~/proyecto-nova$ sudo nova-manage project zipfile miproyecto ferdy
~/proyecto-nova$ unzip nova.zip
~/proyecto-nova$ . novarc

Llegados a este punto ya tenemos todo configurado. Es hora de descargarse una imagen y publicarla en un bucket (por ejemplo: mibucket). En este caso vamos a utilizar una imagen de Ubuntu Server de 64bits (en el repositorio de Ubuntu podeis encontrar más imagenes):

~/proyecto-nova$ wget http://uec-images.ubuntu.com/maverick/current/maverick-server-uec-amd64.tar.gz
~/proyecto-nova$ uec-publish-tarball maverick-server-uec-amd64.tar.gz mibucket

Como resultado nos informará del identificador de imagen (emi), el identificador de kernel (eki) y el identificador de ramdisk (eri):

emi="ami-dqay5v06"; eri="none"; eki="ami-7l5uc5w8";

Es importante recordar el identificador de imagen, ya que será el que utilizemos en la creación de instancias, pero si por cualquier razón lo olvidamos, con el comando euca-describe-images podremos ver las imagenes publicadas junto con su emi:

IMAGE ami-dqay5v06 mibucket/maverick-server-uec-amd64.img.manifest.xml miproyecto available private x86_64 machine ami-7l5uc5w8
IMAGE ami-7l5uc5w8 mibucket/maverick-server-uec-amd64-vmlinuz-virtual.manifest.xml miproyecto available private x86_64 kernel true

A continuación nos crearemos un par de claves (miclave) para poder acceder a nuestras máquinas virtuales:

~/proyecto-nova$ euca-add-keypair miclave > miclave.priv
~/proyecto-nova$ chmod 0600 miclave.priv

Y crearemos una regla en el grupo de seguridad por defecto para autorizar el trafico entrante por el puerto 22 (SSH):

~/proyecto-nova$ euca-authorize default -P tcp -p 22 -s 0.0.0.0/0

Llegados a este punto ya podemos instanciar la máquina virtual. En este caso utilizaremos una instancia de tipo pequeño (m1.tiny – Memory: 512MB, VCPUS: 1) y le asignaremos la credencial creada anteriormente (miclave). Acordaos de cambiar el identificador de la imagen por el vuestro:

~/proyecto-nova$ euca-run-instances ami-dqay5v06 -k miclave -t m1.tiny

Que como resultado nos informará del identificador de instancia (i-nnnnnnnn) y el estado (en este caso scheduling):

RESERVATION r-6nwfk587 miproyecto default
INSTANCE i-00000001 ami-dqay5v06 scheduling miclave (miproyecto, None) 0 m1.tiny 2011-03-02T23:17:32Z unknown zone

Ahora vamos a esperar a que la instancia arranque. Con el comando euca-describe-instances podemos conocer en que estado se encuentra y si se le ha asignado ya una dirección IP:

RESERVATION r-6nwfk587 miproyecto default
INSTANCE i-00000001 ami-dqay5v06 10.0.0.3 10.0.0.3 launching miclave (miproyecto, ubuntu) 0 m1.tiny 2011-03-02T23:17:32Z nova

Una vez el estado pase a running:

RESERVATION r-6nwfk587 miproyecto default
INSTANCE i-00000001 ami-dqay5v06 10.0.0.3 10.0.0.3 running miclave (miproyecto, ubuntu) 0 m1.tiny 2011-03-02T23:17:32Z nova

es hora de conectarnos a nuestra instancia. Para ello utilizaremos un SSH con las credenciales obtenidas anteriormente y la IP asignada a nuestra instancia:

~/proyecto-nova$ ssh -i miclave.priv root@10.0.0.3

Y finalmente, cuando os hayáis cansado de jugar, acordaos de apagar la instancia con el comando:

~/proyecto-nova$ euca-terminate-instances i-00000001

En el próximo post explicaré como manejar estas instancias desde una consola web en vez de la línea de comandos.

Esta entrada fue publicada en General y etiquetada , , , . Guarda el enlace permanente.

3 respuestas a Instalando Openstack

  1. Carlos dijo:

    Muy bueno tu blog

    Mi nombre es Carlos me gustaria saber mas sobre este tema y poder implemetar Open Stack

    No se si me puedes recomendar alguna pagina o libro en internet para poder informarme mejor muchas gracias y sigue adelante

  2. ferdy dijo:

    Carlos, la página de documentación de OpenStack es un buen lugar de inicio. Y si no quieres complicarte la vida instalando OpenStack manualmente, puedes utilizar la distro de StackOps.

  3. Hernan Nina dijo:

    Hola Ferdy,

    Gracias por el Blog sobre OpenStack.

    Que diferencia existe OpenStack con Adobe EC2

    Saludos Gracias

Deja un comentario

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

Notificarme los nuevos comentarios por correo electrónico. Tambien puedes suscribirte sin comentar.