Keystone je služba identity OpenStack, která poskytuje funkce sledování uživatelů a jejich oprávnění; katalogové funkce prostřednictvím koncových bodů API. Ve skutečnosti vám neposkytuje žádné funkce správy uživatelů, ale poskytuje zásuvná rozhraní pro výběr mezi aktuální autentizační službou nebo službami identity třetích stran, které jsou dostupné na trhu.
Než budete pokračovat, podívejte se na náš návrh infrastruktury v předchozím článku.
Tato příručka vám ukáže, jak nainstalovat a nakonfigurovat službu OpenStack Identity s kódovým názvem keystone v uzlu řadiče.
Předpoklady:
Před instalací služby identity OpenStack musíte vytvořit databázi a administrační token.
# mysql -u root -p
vytvořte databázi keystone.
CREATE DATABASE keystone;
Nastavte správný přístup k databázi lichoběžníkového zkreslení.
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'PASSWD'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'PASSWD';
Nahraďte PASSWD vhodným heslem.
Vygenerujte náhodnou hodnotu, kterou lze použít jako administrační token pro počáteční konfiguraci.
# openssl rand -hex 10
Instalace a konfigurace KeyStone:
Zakažte automatické spouštění služby lichoběžníkového zkreslení po instalaci.
# echo "manual" > /etc/init/keystone.override
* V Kilo se Apache HTTP server používá k obsluhování keystone požadavků na portech 5000 a 35357 pomocí mod_wsgi namísto Eventlet, který je v této verzi OpenStack odepsán.
Nainstalujte keystone.
# apt-get install keystone python-openstackclient apache2 libapache2-mod-wsgi memcached python-memcache
Upravte konfigurační soubor lichoběžníkového zkreslení.
# nano /etc/keystone/keystone.conf
Umístěte následující položky do správné části výše uvedeného souboru.
[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
Spusťte následující příkaz k naplnění databáze služby identity.
# keystone-manage db_sync
Konfigurace serveru Apache HTTP:
Upravte /etc/apache2/apache2.conf a nakonfigurujte volbu ServerName tak, aby odkazovala na uzel řadiče.
ServerName controller
Vytvořte níže uvedený soubor.
# nano /etc/apache2/sites-enabled/wsgi-keystone.conf
Vložte následující obsah do výše uvedeného souboru.
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>
Vytvořte adresář pro komponenty WSGI.
# mkdir -p /var/www/cgi-bin/keystone
Spusťte následující příkaz ke stažení komponent WSGI z upstream úložiště.
# 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
Změňte vlastnictví a oprávnění.
# chown -R keystone:keystone /var/www/cgi-bin/keystone # chmod 755 /var/www/cgi-bin/keystone/*
Restartujte službu Apache.
# service apache2 restart
Odeberte databázi SQLite, protože používáme databázi MySQL.
# rm -f /var/lib/keystone/keystone.db
Dále je třeba vytvořit entitu služby a koncové body API.