Il servizio OpenStack Identity fornisce un unico punto di integrazione per la gestione dei servizi di autenticazione, autorizzazione e catalogo dei servizi.
In realtà non fornisce alcuna funzione di gestione degli utenti, ma fornisce interfacce plug-in per scegliere tra il servizio di autenticazione corrente o servizi di identità di terze parti disponibili sul mercato.
Quando si installa il servizio OpenStack Identity, è necessario registrare ciascun servizio nell'installazione di OpenStack. Il servizio di identità può quindi tenere traccia di quali servizi OpenStack sono installati e dove si trovano sulla rete.
Prima di andare avanti, dai un'occhiata al nostro design dell'infrastruttura nell'articolo precedente.
Questa guida mostra come installare e configurare il servizio OpenStack Identity (keystone) sul nodo controller.
Prerequisiti:
Prima di installare il servizio di identità OpenStack, è necessario creare un database e un token di amministrazione.
# mysql -u root -p
creare il database keystone.
CREATE DATABASE keystone;
Imposta l'accesso corretto al database keystone.
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'PASSWD'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'PASSWD';
Esci dal client di accesso al database.
* Sostituisci PASSWD con una password adeguata.
Genera un valore casuale e che può essere utilizzato come token di amministrazione per la configurazione iniziale.
# openssl rand -hex 10
Installa e configura KeyStone:
Disattiva il servizio keystone dall'avvio automatico dopo l'installazione.
# echo "manual" > /etc/init/keystone.override
* In Kilo e Liberty, il server HTTP Apache viene utilizzato per servire le richieste keystone sulle porte 5000 e 35357 con l'aiuto di mod_wsgi invece di Eventlet, che è deprezzato in questa versione OpenStack.
Installa il pacchetto keystone.
# apt-get install keystone apache2 libapache2-mod-wsgi memcached python-memcache
Modifica il file di configurazione keystone.
# nano /etc/keystone/keystone.conf
Inserisci le seguenti voci nella sezione appropriata del file sopra.
[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
Eseguire il comando seguente per popolare il database del servizio di identità.
# su -s /bin/sh -c "keystone-manage db_sync" keystone
Configura il server HTTP Apache:
Modifica /etc/apache2/apache2.conf e configura Nomeserver opzione per fare riferimento al nodo del controller, aggiungerlo nella sezione Configurazione globale.
ServerName controller
Crea il file sottostante.
# nano /etc/apache2/sites-enabled/wsgi-keystone.conf
Incolla il seguente contenuto nel file sopra.
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>
Riavvia il servizio Apache.
# service apache2 restart
Rimuovi il database SQLite poiché stiamo usando il database MySQL.
# rm -f /var/lib/keystone/keystone.db
Successivamente è creare l'entità del servizio e gli endpoint API.