Instalación y configuración de OpenStack Mitaka sobre LXC en Ubuntu 14.04
Creamos la base de datos de "keystone" y otorgamos los permisos necesarios.
root@nova-controller:~# mysql -u root -p MariaDB [(none)]> CREATE DATABASE keystone; MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';Generamos de forma aleatoria un token para realizar la configuración inicial.
root@nova-controller:~# openssl rand -hex 10Deshabilitamos keystone para que no se inicie automáticamente tras la instalación.
root@nova-controller:~# echo "manual" > /etc/init/keystone.overrideInstalamos los paquetes necesarios.
root@keystone:~# apt install keystone apache2 libapache2-mod-wsgiEditamos el fichero /etc/keystone/keystone.conf y añadimos las siguientes líneas.
root@keystone:~# emacs /etc/keystone/keystone.conf [DEFAULT] admin_token=ADMIN_TOKEN ... [database] ... connection=mysql+pymysql://keystone:KEYSTONE_DBPASS@NOVA_CONTROLLER_INTERNAL_IP/keystone ... [token] ... provider=fernet
ADMIN_TOKEN es el token generado anteriormente de forma aleatoria.Poblamos la base de datos de Keystone.
root@keystone:~# su -s /bin/sh -c "keystone-manage db_sync" keystoneCreamos la primera Fernet key.
root@keystone:~# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystoneEditamos el fichero de configuración de apache para que el ServerName haga referencia a la dirección IP de la interfaz "eth1" del lxc KEYSTONE.
root@keystone:~# emacs /etc/apache2/apache2.conf ServerName KEYSTONE_INTERNAL_IPCreamos un nuevo sitio web para keystone.
root@keystone:~# emacs /etc/apache2/sites-available/wsgi-keystone.conf Listen 5000 Listen 35357 <VirtualHost *:5000> WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /usr/bin/keystone-wsgi-public WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/apache2/keystone.log CustomLog /var/log/apache2/keystone_access.log combined <Directory /usr/bin> Require all granted </Directory> </VirtualHost> <VirtualHost *:35357> WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias / /usr/bin/keystone-wsgi-admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/apache2/keystone.log CustomLog /var/log/apache2/keystone_access.log combined <Directory /usr/bin> Require all granted </Directory> </VirtualHost>Habilitamos el nuevo sitio web.
root@keystone:~# a2ensite wsgi-keystone.confReiniciamos Apache.
root@keystone:~# service apache2 restartEliminamos la base de datos SQLite.
root@keystone:~# rm -f /var/lib/keystone/keystone.dbDeclaramos las variables de entorno necesarias para crear las entidades de los servicios de nuestro OpenStack.
root@keystone:~# export OS_TOKEN=1783cf34785391bfdf33 root@keystone:~# export OS_URL=http://KEYSTONE_IP:35357/v3 root@keystone:~# export OS_IDENTITY_API_VERSION=3Creamos la entidad del servicio de identidad (Keystone).
root@keystone:~# openstack service create --name keystone --description "OpenStack Identity" identity +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Identity | | enabled | True | | id | 7f1f794e61fe4443999b4a426c85381d | | name | keystone | | type | identity | +-------------+----------------------------------+Creamos los endpoints de Keystone.
root@keystone:~# openstack endpoint create --region RegionOne identity public http://KEYSTONE_INTERNAL_IP:5000/v3 root@keystone:~# openstack endpoint create --region RegionOne identity internal http://KEYSTONE_INTERNAL_IP:5000/v3 root@keystone:~# openstack endpoint create --region RegionOne identity admin http://KEYSTONE_INTERNAL_IP:35357/v3Creamos un nuevo dominio en OpenStack.
root@keystone:~# openstack domain create --description "Default Domain" defaultCreamos el proyecto, el usuario y el rol para el usuario "admin".
root@keystone:~# openstack project create --domain default --description "Admin Project" admin root@keystone:~# openstack user create --domain default --password-prompt admin root@keystone:~# openstack role create adminAñadimos el rol admin a su correspondiente usuario y proyecto.
root@keystone:~# openstack role add --project admin --user admin adminCreamos el proyecto "service" que alojará los usuarios creados para cada servicio añadido a OpenStack.
root@keystone:~# openstack project create --domain default --description "Service Project" serviceCreamos también un usuario sin permisos de administración.
root@keystone:~# openstack project create --domain default --description "Diego Project" diego root@keystone:~# openstack user create --domain default --password-prompt diegoCreamos un rol "user".
root@keystone:~# openstack role create user root@keystone:~# openstack role add --project diego --user diego userDeshabilitamos el mecanismo de token de autenticación temporal. Editamos el fichero /etc/keystone/keystone-paste.ini y eliminamos el admin_token_auth en las secciones "[pipeline:public_api]", "[pipeline:admin_api]" y "[pipeline:api_v3]". Borramos de memoria las variables OS_TOKEN y OS_URL.
root@keystone:~# unset OS_TOKEN OS_URLSolicitamos un token de autenticación como usuario "admin".
root@keystone:~# openstack --os-auth-url http://KEYSTONE_INTERNAL_IP:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issueSolicitamos un token de autenticación como usuario "diego".
root@keystone:~# openstack --os-auth-url http://KEYSTONE_INTERNAL_IP:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name diego --os-username diego token issueCreamos los "OpenStack client scripts".
root@CLIENT:~$ emacs admin-openrc #!/bin/bash export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=ADMIN_PASS export OS_AUTH_URL=http://KEYSTONE_INTERNAL_IP:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
root@CLIENT:~$ emacs diego-openrc #!/bin/bash export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=diego export OS_USERNAME=diego export OS_PASSWORD=USER_PASS export OS_AUTH_URL=http://KEYSTONE_IP:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2