INTRODUCTION À LA CONFIGURATION D'OPENSTACK SUR PLANETHOSTER

Troisième partie : Installer Keystone pour la gestion des authentifications et du contrôle des communications entre les usagers (utilisateurs et services) et OpenStack

Jean-Philippe Méthot

Si vous avez suivi les tutoriels précédents jusqu’à maintenant, vous devriez avoir un nœud contrôleur de préparé ainsi que deux nœuds compute, avec les interfaces réseau configurées, les câbles réseau branchés et certaines applications nécessaires à Openstack déjà installées. Nous en sommes donc maintenant à l’installation de la première composante d’Openstack : Keystone.

Un espace de discussion vous est proposé sur le forum. N'hésitez pas à apporter votre avis. Commentez

- Titre : INTRODUCTION À LA CONFIGURATION D'OPENSTACK SUR PLANETHOSTER

- Auteur : Jean-Philippe Méthot

- Parution : 10 mai 2018

- Mise à jour : 15 mai 2018

- Licence : Copyright ® 2018 Jean-Philippe Méthot. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Installation de la base de données du package de Keystone

- III. Configuration de Keystone

- IV. Configuration d’Apache

- V. Conclusion

- VI. Note de la rédaction Developpez.com

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.