Instalando el Dashboard de Openstack

Como lo prometido es deuda, aquí teneis las instrucciones para manejar openstack desde una consola web en vez de la línea de comandos.

Lo primero que debéis hacer es instalar el sistema de control de versiones bazaar, ya que el dashboard de Openstack todavia no está disponible en forma de paquete:

~$ sudo apt-get install bzr

A continuación vamos a instalar el módulo que contiene la interfaz para actuar con el controlador de openstack (django-nova):

~$ mkdir src
~$ cd src
~/src$ mkdir django-nova
~/src$ cd django-nova
~/src/django-nova$ bzr init-repo .
~/src/django-nova$ bzr branch lp:django-nova/trunk

Ahora instalaremos el módulo que contiene el dashboard (openstack-dashboard). Este módulo es una referencia que ha de servir de ejemplo para que otras empresas creen sus propios dashboards, y a dia de hoy no esta claro que en futuro se convierta en oficial, aunque a efectos de este tutorial ya nos vale:

~/src/django-nova$ cd ..
~/src$ mkdir openstack-dashboard
~/src$ cd openstack-dashboard
~/src/openstack-dashboard$ bzr init-repo .
~/src/openstack-dashboard$ bzr branch lp:openstack-dashboard trunk

Antes de arrancar la consola, debemos ajustar algunos parametros. En primer lugar creamos y editamos el archivo de configuración (local_settings.py):

~/src/openstack-dashboard$ cd trunk/local
~/src/openstack-dashboard/trunk/local$ cp local_settings.py.example local_settings.py
~/src/openstack-dashboard/trunk/local$ vi local_settings.py

En este archivo debemos especificar los siguientes parámetros:

  • NOVA_ACCESS_KEY: debemos especificar el contenido de la variable EC2_ACCESS_KEY que encontrareis en el archivo novarc
  • NOVA_SECRET_KEY: debemos especificar el contenido de la variable EC2_SECRET_KEY que encontrareis en el archivo novarc
  • NOVA_ADMIN_USER: debemos especificar el contenido de la variable NOVA_USERNAME que encontrareis en el archivo novarc
  • NOVA_PROJECT: debemos especificar el nombre de un proyecto sobre el que el usuario indicado anteriormente tengo permisos

Ahora ya podemos seguir con el proceso de configuración:

~/src/openstack-dashboard/trunk/local$ apt-get install -y python-setuptools
~/src/openstack-dashboard/trunk/local$ cd ..
~/src/openstack-dashboard/trunk$ sudo easy_install virtualenv
~/src/openstack-dashboard/trunk$ python tools/install_venv.py ../../django-nova/trunk
~/src/openstack-dashboard/trunk$ tools/with_venv.sh dashboard/manage.py syncdb

En este punto, el proceso de instalación nos pedirá si queremos crear un usuario administrador de la consola. Indicamos que si queremos crearlo, y nos preguntará por un nombre de usuario, nuestro email y una contraseña para el usuario a crear:

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'ferdy'):
E-mail address: YOUR_EMAIL
Password: PASSWORD
Password (again): PASSWORD

Una vez instalados y configurados todos los módulos, vamos a arrancar el servidor web:

~/src/openstack-dashboard/trunk$ tools/with_venv.sh dashboard/manage.py runserver 0.0.0.0:8000

Y ahora nos conectaremos al dashboard utilizando la URL http://localhost:8000. Lo primero que nos aparecerá será la pantalla de login, donde introduciremos el usuario y contraseña que hemos creado anteriormente:

Una vez conectados nos aparece una pantalla con la relación de nuestros proyectos:

Si consultamos “Miproyecto” os aparece el dashboard con las acciones que podeis realizar sobre el:

En primer lugar vamos a consultar las imagenes publicadas. Pulsamos sobre el enlace de “Images” situado en el menu de la izquierda y nos aparece la relación de imagenes disponibles:

Si pulsamos en el identificador de la imagen emi (campo ID), nos aparecen los detalles de la imagen:

Ahora vamos a instanciarla. Pulsamos sobre “Launch“, y nos aparece una pantalla donde podremos indicar las características de la instancia que queremos arrancar. Escogemos que solo queremos arrancar 1 instancia, indicamos el tipo de instancia (m1.small – Memory: 2048MB, VCPUS: 1) y le asignamos la credencial miclave:

Ya tenemos la instancia lanzada. La aplicación nos dirigirá a la pantalla de instancias donde podreís ver todas las instancias junto con el estado de las mismas (campo State) y la dirección IP asignada:

Si pulsamos en el identificador de una instancia (camp ID), nos aparecen los detalles de la instancia:

Mientras esperamos a que la instancia esté disponible (estado running), nos vamos a ver las credenciales disponibles. Pulsamos sobre el enlace de Keys situado en el menu de la izquierda y nos aparece la relación de claves disponibles:

Si pulsamos sobre el enlace de Volumes en el menu de la izquierda, podremos ver la relación de volumenes de almacenamiento disponibles:

Ahora volvemos a las instancias para comprobar si ya esta disponible:

En caso de que así sea, podeis abrir una sesión de terminal y conectaros via SSH a vuestra instancia. Y como siempre, una vez os hayáis cansado de jugar, no os olvideis de apagar la instancia pulsando sobre “Terminate“:

Para próximos posts, intentaré explicar como configurar la gestión de almacenamiento.

Comments

Comment by rmacian on 2011-04-28 17:45:11 +0000

Hola,

Primero de todos felicitarte por la cantidad de contenido por la brevedad de proyecto.

He seguido la entrada de instalación y este y cuando ya estoy intentando arrancar la instancia se me queda en scheduling. Mirando los logs veo que aparece un error

Error: libvirt version is too old (does not support getVersion). Los paquetes instalados son los propios de launchpad excepto uno

# dpkg -l | grep libvirt

ii libvirt-bin 0.8.8-1ubuntu3~ppalucid1 the programs for the libvirt library

ii libvirt0 0.8.8-1ubuntu3~ppalucid1 library for interfacing with different virtu

ii python-libvirt 0.7.5-5ubuntu27.9 libvirt Python bindings

Alguna idea ?

Comment by ferdy on 2011-04-29 03:44:27 +0000

Hola, el problema lo tienes precisamente en el paquete del binding de Python para libvirt (python-libvirt), ya que, tal como dice el error, la version que tienes es obsoleta. Esta comprobación se introdujo en nova hace 1 mes aprox .

Has probado a actualizar solo este paquete?

Comment by chetan on 2011-06-24 15:33:25 +0000

Hello ,

We testing Openstack with single node environment , alll is going well , however having problem installing openstack-dashboard end up with error :

Installing custom SQL …

Installing indexes …

No fixtures found.

next we able to run WebUserInterFace however no way to login :shows erro 1110 [connection refused].

my local_setttng.py :

import os

DEBUG = True

TEMPLATE_DEBUG = DEBUG

PROD = False

USE_SSL = False

LOCAL_PATH = os.path.dirname(os.path.abspath(\__file__))

DATABASES = {

‘default’: {

‘ENGINE’: ‘django.db.backends.sqlite3’,

‘NAME’: os.path.join(LOCAL_PATH, ‘dashboard_openstack.sqlite3’),

},

}

CACHE_BACKEND = ‘dummy://’

# Send email to the console by default

EMAIL_BACKEND = ‘django.core.mail.backends.console.EmailBackend’

# Or send them to /dev/null

#EMAIL_BACKEND = ‘django.core.mail.backends.dummy.EmailBackend’

# django-mailer uses a different settings attribute

MAILER_EMAIL_BACKEND = EMAIL_BACKEND

EMAIL_HOST = ‘localhost’

EMAIL_PORT = 25

# Configure these for your outgoing email host

# EMAIL_HOST = ‘smtp.my-company.com’

# EMAIL_PORT = 25

# EMAIL_HOST_USER = ‘djangomail’

# EMAIL_HOST_PASSWORD = ‘top-secret!’

OPENSTACK_ADMIN_TOKEN = “999888777666”

OPENSTACK_KEYSTONE_URL = “http://localhost:5000/v2.0/”

TOTAL_CLOUD_RAM_GB = 30

NOVA_DEFAULT_ENDPOINT = ‘http://localhost:8773/services/Cloud’

NOVA_DEFAULT_REGION = ‘nova’

NOVA_ACCESS_KEY = ‘261c1aac-398c-4f5d-9b1e-0b6a58d8d90d:nubeblog’

NOVA_SECRET_KEY = ‘8dec5030-11a2-4569-b7a9-8ffbcc7f2c5d’

NOVA_ADMIN_USER = ‘diego’

NOVA_PROJECT = ‘nubelog’

Comment by ferdy on 2011-06-25 14:57:43 +0000

Chetan, I suggest you to open a ticket at the Dashboard for OpensStack Launchpad site.

Publicado en General | Etiquetado