I. Introduction▲
Keystone est un projet d’Openstack dont le but est d’authentifier et de contrôler les communications entre les usagers et Openstack ainsi qu’entre les composantes elles-mêmes. Pour ce faire, il utilise un système de jetons d’authentification. Ces jetons authentifient et autorisent ou bloquent toute opération faite dans Openstack.
Lorsqu’un utilisateur veut se connecter à Openstack, il va utiliser une application client. Par exemple, en ligne de commandes, la plupart des projets possèdent leur propre client, en plus d’un client universel. Ainsi, si un utilisateur entre la commande suivante :
neutron floatingip-list
Le client de Neutron est appelé afin d’obtenir une liste de toutes les IP flottantes. Ce qui se passe en arrière-plan ici, c’est que l’utilisateur a fourni un nom d’utilisateur et un mot de passe, généralement à l’aide de variables d’environnement, et le client Neutron a tout d’abord validé avec keystone si ces informations étaient bonnes. En réponse, le service keystone a donné un jeton d’authentification au client Neutron. Lorsque le client a par la suite contacté le service Neutron, celui-ci a recontacté le service Keystone afin de valider que le jeton était bien valide. Recevant une réponse positive de Keystone, le service a donc procédé à fournir les informations demandées au client.
Ce n’est qu’un exemple de l’utilisation de Keystone parmi tant d’autres. Lorsque les services d’Openstack communiquent entre eux, ils vont souvent aussi avoir besoin de s’authentifier avec Keystone. En plus de jouer ce rôle crucial dans le fonctionnement de votre cloud, ce service garde dans sa base de données une liste de toutes les API intégrées dans Openstack ainsi que l’adresse à contacter pour chacun d’eux. Il s’agit donc de la pièce la plus importante d’Openstack avec laquelle vous n’interagirez pratiquement jamais, sauf pour ajouter des comptes utilisateurs.
II. Installation de la base de données du package de Keystone▲
Avant de procéder à l’installation du package Keystone, nous devrons créer une base de données et la configurer. Allez sur le nœud contrôleur et connectez-vous à MySQL :
mysql -u root -p
À l’invite de commande MySQL, créez une base de données pour Keystone :
CREATE
DATABASE
keystone;
Puis, créez un utilisateur qui puisse accéder à cette base de données :
GRANT
ALL
PRIVILEGES
ON
keystone.*
TO
'keystone'
@'localhost'
IDENTIFIED
BY
'motdepasse'
;
GRANT
ALL
PRIVILEGES
ON
keystone.*
TO
'keystone'
@'%'
IDENTIFIED
BY
'motdepasse'
;
Dans ces deux dernières lignes de commande, remplacez motdepasse par un mot de passe approprié pour Keystone. Il faut que ce soit le même mot de passe dans les deux commandes.
La base de données créée, nous pouvons maintenant passer à l’installation des packages nécessaires au fonctionnement de Keystone. Effectuez la commande suivante :
yum install openstack-keystone httpd mod_wsgi
Vous allez ainsi installer Keystone, Apache et le mod_wsgi pour Apache. Mais pourquoi installons-nous Apache ? Depuis plusieurs versions déjà, Openstack recommande de servir les requêtes de Keystone à travers Apache et son mod_wsgi. L’idée derrière cette manipulation est qu’Apache est en soit plus performant que le service Keystone à traiter des requêtes. En utilisant Apache plutôt que seulement Keystone, on augmente donc le volume possible de requêtes traitées par seconde.
III. Configuration de Keystone▲
Toutes les configurations du service keystone résident dans le fichier /etc/keystone/keystone.conf. Vous pouvez utiliser le fichier par défaut et éditer uniquement les lignes à modifier en enlevant le # en début de ligne. Alternativement, si vous êtes comme moi et préférez les fichiers propres sans options et texte inutiles, vous pouvez vider le fichier et ne copier-coller que les lignes de configuration importantes. Cela dit, je vous conseille fortement de garder tout ce qui n’est pas présentement commenté dans le fichier par défaut.
Nous allons inscrire deux lignes de configuration dans ce fichier. La première assure la connexion à la base de données à l’aide des autorisations de l’utilisateur que nous avons créé précédemment.
[database]
connection = mysql+pymysql://keystone:motdepasse@controller/keystone
Cette ligne doit se trouver dans la section « [database] » du fichier de configuration. Remplacez motdepasse par le mot de passe que vous avez mis pour cet utilisateur.
Cette deuxième ligne de configuration concerne le type de jeton utilisé par Keystone.
[token]
provider = fernet
Ce type de jeton est différent du jeton par défaut de Keystone. Le jeton fernet est encrypté à l’aide d’une clé créée par Keystone. Ainsi, pour vérifier l’authenticité du jeton, Keystone n’a qu’à réussir à décrypter le jeton avec sa clé pour prouver sa validité.
Toutefois, avant de procéder à la création des clés pour les jetons fernet, nous allons tout d’abord peupler la base de données de Keystone. Pour ce faire, utilisez la commande suivante à l’invite de commande :
su -s /bin/sh -c "keystone-manage db_sync"
keystone
Puis, on crée les clés de la manière suivante :
keystone-manage fernet_setup –keystone-user keystone –keystone-group keystone
keystone-manage credential_setup –keystone-user keystone –keystone-group keystone
Pour terminer, on active Keystone à l’aide de la commande suivante :
keystone-manage bootstrap --bootstrap-password motdepasseadmin --bootstrap-admin-url --bootstrap-internal-url --bootstrap-public-url --bootstrap-region-id RegionOne
Le mot de passe admin de la commande précédente est le mot de passe que vous utiliserez pour vous connecter à Openstack en tant qu’administrateur. Les différentes URL doivent indiquer où le service keystone écoutera (controller devrait être résolvable au contrôleur si vous avez rempli les fichiers hosts tel qu’indiqué dans le dernier article). Le region id doit être un nom représentant l’endroit où se trouve le cloud. C’est uniquement important si vous croyez implanter votre cloud en ayant des serveurs séparés à divers endroits géographiquement distincts. Sinon, le nom par défaut RegionOne est tout à fait approprié.
IV. Configuration d’Apache▲
La configuration d’Apache sera relativement simple, puisqu’un fichier de configuration par défaut est maintenant inclus dans Keystone. Premièrement, vous devrez spécifier le nom du serveur pour qu’il soit conforme à votre nom d’hôte. Pour ce faire, ouvrez le fichier /etc/httpd/conf/httpd.conf dans votre éditeur de texte préféré. Modifier la ligne ServerName
pour qu’elle inclue le nom d’hôte du serveur :
ServerName
controller
Deuxièmement, créez un lien symbolique vers le fichier de configuration Apache inclus dans Keystone :
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
Pour terminer, on redémarre Apache et le configure pour qu’il se lance au démarrage du serveur.
systemctl enable httpd
systemctl start httpd
V. Conclusion▲
Vous avez maintenant une composante d’Openstack fonctionnelle. Dans notre prochain article, nous verrons comment tester et utiliser Keystone et procéderons à l’installation de Glance, le projet Openstack se chargeant de stocker les images de machines virtuelles.
VI. Note de la rédaction Developpez.com▲
Developpez.com remercie PlanetHoster pour l'autorisation de publication de ce tutoriel. Nos remerciements également à Guillaume SIGUI pour la mise au gabarit, et f-leb pour la relecture orthographique.