Keystone ist der Identitätsdienst von OpenStack, er bietet die Funktionalität, Benutzer und ihre Berechtigungen zu verfolgen; Katalogfunktionen über API-Endpunkte. Es bietet Ihnen eigentlich keine Benutzerverwaltungsfunktionen, sondern Plug-in-Schnittstellen, um zwischen aktuellen Authentifizierungsdiensten oder Identitätsdiensten von Drittanbietern zu wählen, die auf dem Markt erhältlich sind.
Bevor Sie fortfahren, werfen Sie einen Blick auf unser Infrastrukturdesign im vorherigen Artikel.
Diese Anleitung zeigt Ihnen, wie Sie den OpenStack-Identitätsdienst mit dem Codenamen Keystone auf dem Controller-Knoten installieren und konfigurieren.
Voraussetzungen:
Vor der Installation des OpenStack-Identitätsdienstes müssen Sie eine Datenbank und ein Administrationstoken erstellen.
# mysql -u root -p
Erstellen Sie die Keystone-Datenbank.
CREATE DATABASE keystone;
Stellen Sie den richtigen Zugriff auf die Keystone-Datenbank ein.
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'PASSWD'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'PASSWD';
Ersetzen Sie PASSWD durch ein passendes Passwort.
Generieren Sie einen Zufallswert, der als Administrationstoken für die Erstkonfiguration verwendet werden kann.
# openssl rand -hex 10
KeyStone installieren und konfigurieren:
Automatisches Starten des Keystone-Dienstes nach der Installation deaktivieren.
# echo "manual" > /etc/init/keystone.override
* In Kilo wird der Apache HTTP-Server verwendet, um Keystone-Anfragen auf den Ports 5000 und 35357 mit Hilfe von mod_wsgi anstelle von Eventlet zu bedienen, das in dieser Version von OpenStack veraltet ist.
Keystone installieren.
# apt-get install keystone python-openstackclient apache2 libapache2-mod-wsgi memcached python-memcache
Keystone-Konfigurationsdatei bearbeiten.
# nano /etc/keystone/keystone.conf
Platzieren Sie die folgenden Einträge im richtigen Abschnitt der obigen Datei.
[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
Führen Sie den folgenden Befehl aus, um die Datenbank des Identitätsdienstes zu füllen.
# keystone-manage db_sync
Apache HTTP-Server konfigurieren:
Bearbeiten Sie /etc/apache2/apache2.conf und konfigurieren Sie die ServerName-Option, um auf den Controller-Knoten zu verweisen.
ServerName controller
Erstellen Sie die folgende Datei.
# nano /etc/apache2/sites-enabled/wsgi-keystone.conf
Fügen Sie den folgenden Inhalt in die obige Datei ein.
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>
Erstellen Sie das Verzeichnis für WSGI-Komponenten.
# mkdir -p /var/www/cgi-bin/keystone
Führen Sie den folgenden Befehl aus, um WSGI-Komponenten aus dem Upstream-Repository herunterzuladen.
# 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
Inhaberschaft und Berechtigungen ändern.
# chown -R keystone:keystone /var/www/cgi-bin/keystone # chmod 755 /var/www/cgi-bin/keystone/*
Starten Sie den Apache-Dienst neu.
# service apache2 restart
Entfernen Sie die SQLite-Datenbank, da wir die MySQL-Datenbank verwenden.
# rm -f /var/lib/keystone/keystone.db
Als Nächstes erstellen Sie die Dienstentität und die API-Endpunkte.