
Keystone è il servizio di identità di OpenStack, fornisce la funzionalità di tracciamento degli utenti e delle loro autorizzazioni; funzioni di catalogo tramite gli endpoint API. In realtà non fornisce alcuna funzione di gestione degli utenti, ma fornisce interfacce plug-in per scegliere tra il servizio di autenticazione corrente o i servizi di identità di terze parti disponibili sul mercato.
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 con nome in codice, 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';
Sostituisci PASSWD con una password adatta.
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, 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 keystone.
# apt-get install keystone python-openstackclient 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] ... 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
Eseguire il comando seguente per popolare il database del servizio di identità.
# keystone-manage db_sync
Configura il server HTTP Apache:
Modifica /etc/apache2/apache2.conf e configura l'opzione ServerName per fare riferimento al nodo del controller.
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 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>
Crea la directory per i componenti WSGI.
# mkdir -p /var/www/cgi-bin/keystone
Esegui il comando seguente per scaricare i componenti WSGI dal repository upstream.
# 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
Modifica proprietà e autorizzazioni.
# chown -R keystone:keystone /var/www/cgi-bin/keystone # chmod 755 /var/www/cgi-bin/keystone/*
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.