El servicio OpenStack Identity proporciona un único punto de integración para administrar los servicios de autenticación, autorización y catálogo de servicios.
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.
Al instalar el servicio OpenStack Identity, debe registrar cada servicio en su instalación de OpenStack. El servicio de identidad puede rastrear qué servicios de OpenStack están instalados y dónde están ubicados en la red.
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) 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';
Salga del cliente de acceso a la base de datos.
* Reemplazar 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 y Liberty, 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.
Instale el paquete keystone.
# apt-get install keystone 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] ... ## Replace PASSWD with your KeyStone DB password and Controller with your controller node IP or Hostname ## If you found any other MySQL connection entry comment it out. connection = mysql+pymysql://keystone:PASSWD@controller/keystone [memcache] ... servers = localhost:11211 [token] ... provider = uuid driver = memcache [revoke] ... driver = sql
Ejecute el siguiente comando para completar la base de datos del servicio de identidad.
# su -s /bin/sh -c "keystone-manage db_sync" keystone
Configurar el servidor Apache HTTP:
Edite /etc/apache2/apache2.conf y configurar ServerName opción para hacer referencia al nodo del controlador, agréguelo en la sección de configuración global.
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 group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-public WSGIScriptAlias / /usr/bin/keystone-wsgi-public WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On <IfVersion >= 2.4> ErrorLogFormat "%{cu}t %M" </IfVersion> ErrorLog /var/log/apache2/keystone.log CustomLog /var/log/apache2/keystone_access.log combined <Directory /usr/bin> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </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 <IfVersion >= 2.4> ErrorLogFormat "%{cu}t %M" </IfVersion> ErrorLog /var/log/apache2/keystone.log CustomLog /var/log/apache2/keystone_access.log combined <Directory /usr/bin> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </Directory> </VirtualHost>
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.