OpenStack desde cero - Glance

Publicado el 13 abril 2015 por Dbigcloud @dbigcloud

La semana pasada hablábamos del servicio de identidades o KeyStone, explicamos cada uno de los componentes que interactúan en la autenticación de OpenStack, entre ello estaban los servicios, los cuales deben de comunicarse con KeyStone. Esta semana veremos el servicio de imágenes o Glance y cómo integrarlo con KeyStone.

Glance es el servicio de OpenStack el cual permite registrar, descubrir y recuperar imágenes de máquinas virtuales para ser usadas en nuestro entorno de OpenStack. Dichas imágenes son almacenadas tanto en simples como en distribuidos filesystems y son identificadas de la siguiente forma:

/v1/images/

Cuando usamos imágenes en Glance, ya sean para crear nuevas o eliminarlas, éstas pueden pasar por los siguientes estados:

  • Encolada - queued: Quiere decir que hemos registrado una imagen nueva, asignado un identificador pero aún no ha sido subida a Glance.
  • Guardando - saving: La imagen esta siendo subida a Glance.
  • Activa - active: La imagen está totalmente disponible para ser usada en Glance.
  • Abortada - killed: Se produce cuando existe un error durante la subida de una imagen y ésta no es legible.
  • Borrada - deleted: En este estado aún disponemos de la información de la imagen pero no podemos usarla ya que se encuentra eliminada.
  • Pendiente de borrado - pending_delete: Estamos a punto de eliminar la imagen pero aún podemos recuperarla.

En el siguiente esquema podemos observar a nivel gráfico el estado por el que puede pasar una imagen.

 

Al igual que las imágenes, en Glance las tareas también disponen de estados y pueden ser los siguientes:

  • Pendiente - pending: Al igual de la imagen, la tarea aún no ha sido procesada.
  • Procesando - processing: En este estado la tarea ha comenzado a ejecutarse pero aún no ha finalizado.
  • Éxito - Success: La tarea ha sido completada de forma correcta.
  • Fallo - failure: Durante la ejecución de la tarea se ha producido algún error el cual impide que pueda continuar.


Si añadimos nuevas imágenes, debemos especificar tanto el formato de disco como el formato del contenedor, estos pueden ser los siguientes:

  • Los formatos de disco pueden están basados en los formatos de los vendedores y pueden ser: raw, vhd,vmdk,vdi,iso,qcow2,aki,asi,ami.
  • En los contenedores dispondremos de los metadatos de las máquinas virtuales y estos pueden ser: bare, ovf, aki, ari, ami, ova.

Siempre que no sepamos el tipo de contenedor especificaremos de tipo bare.


Cómo instalar Glance

 Al igual que KeyStone, podemos instalar Glance usando el repositorio git:

$> git clone git://github.com/openstack/glance
$> cd glance
$> sudo python setup.py install

O bien si usamos el repositorio de Ubuntu Cloud:

$> sudo apt-get install glance

Los ficheros de configuración de glance son los siguientes:

/etc/glance/glance-api.conf 
/etc/glance/glance-registry.conf

En ellos debemos establecer la cadena de conexión de nuestra base de datos en la sección [Default] , una vez realizado esto, podemos crear la base de datos y su usuario.

# mysql -u root -p
mysql> CREATE DATABASE glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';

Ahora lo siguiente es crear las tablas de la base de datos:

glance-manage db_sync

 
Cómo integrar glance con KeyStone

Tal y como vimos la semana pasada, para cada servicio de OpenStack tenemos que crear el servicio, tenant, endpoint, usuario y rol de Glance en Keystone:

Creación del usuario:

keystone user-create --name=glance --pass=GLANCE_PASS \
   --email=

Creación del rol:

keystone user-role-add --user=glance --tenant=service --role=admin

Creación del servicio:

keystone service-create --name=glance --type=image \
  --description="Glance Image Service"

Creación del usuario:

keystone endpoint-create \
  --service-id=the_service_id_above \
  --publicurl=http://controller:9292 \
  --internalurl=http://controller:9292 \
  --adminurl=http://controller:9292

En los ficheros de configuración que mencionamos anteriormente tenemos que configurar los datos de autenticación que hemos establecido para KeyStone:

[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = GLANCE_PASS

[paste_deploy]
flavor = keystone

Ahora debemos guardar las credenciales en los archivos /etc/glance/glance-api-paste.ini y /etc/glance/glance-registry-paste.ini para que puedan generarse los token.

[filter:authtoken]
paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory
auth_host=controller
admin_user=glance
admin_tenant_name=service
admin_password=GLANCE_PASS

Una vez guardado, tenemos que reiniciar el servicio de Glance, para que los cambios sean validos..

# service glance-registry restart
# service glance-api restart

De esta forma hemos instalado Glance y lo hemos configurado para que pueda usar la autenticación de KeyStone.

Comandos útiles de Glance

Ahora vamos a ver una serie de comandos útiles para usar Glance desde la linea de comandos, debemos de tener en cuenta que para operar con las imágenes debemos conocer su ID y el ID del proyecto asignado, el cual obtendremos listando las imágenes.

Para listar las imágenes usaremos:

glance image-list

Para crear una nueva imagen:

glance image-create --name="DbigCloud01" --disk-format=qcow2 \
  --container-format=bare --is-public=true < centos-7_x86_64-disk.img

Para eliminar una imagen:

glance image-delete 

Para asignar imágenes a un proyecto:

glance member-create  

Si queremos realizar alguna modificación en alguna de las imágenes lo haremos con:

glance image-update [Opciones]  

Para consultar todas las opciones de Glance a través de linea de comandos usaremos el comando de ayuda:

glance help

Cómo habéis visto, este servicio es bastante sencillito de usar espero que os sea de utlidad y os atreváis a instalarlo de forma manual, de esta forma os tendréis una toma de contacto más profunda con OpenStack.