Keystone es el servicio de identidad de OpenStack, brinda la funcionalidad de rastrear usuarios y sus permisos; funciones de catálogo a través de puntos finales de API. En realidad, no le proporciona ninguna función de gestión de usuarios, sino que proporciona interfaces de complemento para elegir entre el servicio de autenticación actual o los servicios de identidad de terceros que están disponibles en el mercado.
Antes de continuar, eche un vistazo a nuestro diseño de infraestructura en el artículo anterior.
Esta guía le muestra cómo instalar y configurar el servicio OpenStack Identity, keystone con nombre en código, en el nodo del controlador.
Requisitos previos:
Antes de instalar el servicio de identidad de OpenStack, debe crear una base de datos y un token de administración.
# mysql -u root -p
crear la base de datos trapezoidal.
CREATE DATABASE keystone;
Configure el acceso adecuado a la base de datos keystone.
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'PASSWD'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'PASSWD';
Reemplace CONTRASEÑA con una contraseña adecuada.
Genera un valor aleatorio y puede usarse como token de administración para la configuración inicial.
# openssl rand -hex 10
Instalar y configurar KeyStone:
Inhabilite el servicio keystone para que no se inicie automáticamente después de la instalación.
# echo "manual" > /etc/init/keystone.override
* En Kilo, el servidor Apache HTTP se usa para atender solicitudes keystone en los puertos 5000 y 35357 con la ayuda de mod_wsgi en lugar de Eventlet, que está obsoleto en esta versión de OpenStack.
Instalar piedra angular.
# apt-get install keystone python-openstackclient apache2 libapache2-mod-wsgi memcached python-memcache
Edite el archivo de configuración trapezoidal.
# nano /etc/keystone/keystone.conf
Coloque las siguientes entradas en la sección adecuada del archivo anterior.
[DEFAULT] ... admin_token = 43405b090eda983ddde2 ## Replace 43405b090eda983ddde2 with a random that you generated earlier verbose = True [database] ... connection = mysql://keystone:PASSWD@controller/keystone ## Replace PASSWD with your KeyStone DB password [memcache] ... servers = localhost:11211 [token] ... provider = keystone.token.providers.uuid.Provider driver = keystone.token.persistence.backends.memcache.Token [revoke] ... driver = keystone.contrib.revoke.backends.sql.Revoke
Ejecute el siguiente comando para completar la base de datos del servicio de identidad.
# keystone-manage db_sync
Configurar el servidor Apache HTTP:
Edite /etc/apache2/apache2.conf y configure la opción ServerName para hacer referencia al nodo del controlador.
ServerName controller
Crea el siguiente archivo.
# nano /etc/apache2/sites-enabled/wsgi-keystone.conf
Pegue el siguiente contenido en el archivo anterior.
Listen 5000 Listen 35357 <VirtualHost *:5000> WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /var/www/cgi-bin/keystone/main WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On <IfVersion >= 2.4> ErrorLogFormat "%{cu}t %M" </IfVersion> LogLevel info ErrorLog /var/log/apache2/keystone-error.log CustomLog /var/log/apache2/keystone-access.log combined </VirtualHost> <VirtualHost *:35357> WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone display-name=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias / /var/www/cgi-bin/keystone/admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On <IfVersion >= 2.4> ErrorLogFormat "%{cu}t %M" </IfVersion> LogLevel info ErrorLog /var/log/apache2/keystone-error.log CustomLog /var/log/apache2/keystone-access.log combined </VirtualHost>
Cree el directorio para los componentes WSGI.
# mkdir -p /var/www/cgi-bin/keystone
Ejecute el siguiente comando para descargar los componentes WSGI del repositorio ascendente.
# curl http://git.openstack.org/cgit/openstack/keystone/plain/httpd/keystone.py?h=stable/kilo | tee /var/www/cgi-bin/keystone/main /var/www/cgi-bin/keystone/admin
Cambiar propiedad y permisos.
# chown -R keystone:keystone /var/www/cgi-bin/keystone # chmod 755 /var/www/cgi-bin/keystone/*
Reinicie el servicio de Apache.
# service apache2 restart
Elimine la base de datos SQLite ya que estamos usando la base de datos MySQL.
# rm -f /var/lib/keystone/keystone.db
Lo siguiente es crear la entidad de servicio y los extremos de la API.