Der OpenStack-Identitätsdienst bietet einen einzigen Integrationspunkt für die Verwaltung von Authentifizierungs-, Autorisierungs- und Dienstkatalogdiensten.
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.
Wenn Sie den OpenStack-Identitätsdienst installieren, müssen Sie jeden Dienst in Ihrer OpenStack-Installation registrieren. Der Identitätsdienst kann dann nachverfolgen, welche OpenStack-Dienste installiert sind und wo sie sich im Netzwerk befinden.
Bevor Sie fortfahren, werfen Sie einen Blick auf unser Infrastrukturdesign im vorherigen Artikel.
Diese Anleitung zeigt Ihnen, wie Sie den OpenStack-Identitätsdienst (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';
Beenden Sie den Client für den Datenbankzugriff.
* Ersetzen Sie PASSWD mit einem passenden 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 und Liberty 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-Paket installieren.
# apt-get install keystone 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] ... ## 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
Führen Sie den folgenden Befehl aus, um die Datenbank des Identitätsdienstes zu füllen.
# su -s /bin/sh -c "keystone-manage db_sync" keystone
Apache HTTP-Server konfigurieren:
Bearbeiten Sie /etc/apache2/apache2.conf und konfigurieren Sie ServerName Option, um auf den Controller-Knoten zu verweisen, fügen Sie ihn im Abschnitt Globale Konfiguration hinzu.
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 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>
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.