Ahora es momento de instalar el servicio para manejar imagenes, el cual tiene como nombre de proyecto el de «Glance». Su origen se remonta desde su liberación en el release de Bexar el 3 de febrero del 2011, y a lo largo de distintas versiones se han ido incorporando nuevas funcionalidades como lo son el soporte a distintos tipos de imagenes(Cactus), el poder compartir una imagen entre varios tenants(Diablo), el replicado de imagenes a traves de glance-replicator(Folsom), la exposición del estatus de los servicios por medio de glance-control(Grizzly) y la incorporación de una estrategia basada en la localización(Ice House).
La arquitectura de Glance esta compuesta por dos componentes:
- glance-api. El cual acepta llamadas a la API para poder descubrir, recuperar y almacenar imagenes.
- glance-registry. Almacena, procesa y recupera la información de las imagenes. Dicha información incluye tamaño tipo, etc.
Para su instalación sera necesario modificar nuevamente el archivo Vagrantfile para incorporar este nuevo servicio, de tal forma que agregaremos la siguiente sección:
Vagrantfile
config.vm.define :glance do |glance|
glance.vm.hostname = 'glance-precise64'
glance.vm.network :private_network, ip: '192.168.50.13'
glance.vm.network :forwarded_port, guest: 9292, host: 9292
glance.vm.provision "shell", path: "glance.sh"
end
Asignaremos la siguiente IP disponible y habilitaremos el puerto 9292 para permitir la comunicación desde el exterior. Al igual que otras instalaciones, los pasos a realizar son similares, los cuales se pueden resumir en la instalación de paquetes, generación de tablas, configuración y reinicio de servicios.
Para la instalación de servicios, en el caso de Ubuntu, sera necesario registrar el repositorio que se utilizara de acuerdo a la version deseada, en este caso es «IceHouse».
glance.sh
echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/icehouse main" >> /etc/apt/sources.list.d/icehouse.list
apt-get update
apt-get --no-install-recommends -qqy install ubuntu-cloud-keyring
apt-get update
apt-get --no-install-recommends -qqy install glance
Una vez instalado los paquetes necesarios, varios archivos de configuración son creados por defecto, los cuales tendremos que modificar para consumir los servicios que ofrece Keystone. Por otra parte, el motor de base de datos que se usa por defecto es sqlite, por lo que es necesario modificar el archivo de configuración para utilizar el servidor de MySQL que creamos previamente.
glance.sh
sed -i.bak "s/auth_host = 127.0.0.1/auth_host = 192.168.50.12/g" /etc/glance/glance-api.conf
sed -i.bak "s/%SERVICE_TENANT_NAME%/service/g" /etc/glance/glance-api.conf
sed -i.bak "s/%SERVICE_USER%/glance/g" /etc/glance/glance-api.conf
sed -i.bak "s/%SERVICE_PASSWORD%/secure/g" /etc/glance/glance-api.conf
sed -i.bak "s/#flavor=/flavor=keystone/g" /etc/glance/glance-api.conf
sed -i.bak "s/auth_host = 127.0.0.1/auth_host = 192.168.50.12/g" /etc/glance/glance-registry.conf
sed -i.bak "s/%SERVICE_TENANT_NAME%/service/g" /etc/glance/glance-registry.conf
sed -i.bak "s/%SERVICE_USER%/glance/g" /etc/glance/glance-registry.conf
sed -i.bak "s/%SERVICE_PASSWORD%/secure/g" /etc/glance/glance-registry.conf
sed -i.bak "s/#flavor=/flavor=keystone/g" /etc/glance/glance-registry.conf
sqlite="sqlite:////var/lib/glance/glance.sqlite"
mysql="mysql://glance:[email protected]/glance"
sed -i.bak "s/#connection = /connection=${mysql//\//\\/}/g" /etc/glance/glance-registry.conf
rm -f /var/lib/glance/glance.sqlite
Es necesario generar las tablas y columnas requeridas por el Servicio de Imagenes, por lo que realizaremos la generación a traves del comando de sincronización provisto por glance-manage.
glance.sh
apt-get --no-install-recommends -qqy install python-mysqldb
glance-manage db_sync
Por ultimo y para poder cargar los nuevos valores de configuracion, necesitaremos reiniciar tanto el servicio de registro como el de la API.
glance.sh
service glance-registry restart
service glance-api restart
Nota: el código utilizado a lo largo de esta publicación estará disponible en el mismo repositorio.