Premiers pas avec OpenShift

#cloud#outil#usine logicielle

Pour l’hébergement et l’exécution d’applications, de plus en plus de sociétés sont attirées par la flexibilité et la simplicité du « Cloud » et font appel aux offres de Paas (Platform as a service) pour héberger et exécuter leurs applications. Tous les grands noms du logiciel ont leur offre, avec Azure pour Microsoft, AppEngine pour Google, ou encore AWS pour Amazon. Cet article a pour but de présenter une alternative aux géants du domaine avec OpenShift, l’offre de Paas de RedHat basée sur des logiciels libres et des formats ouverts.

1. Présentation

Derrière ce mot à la mode, le Cloud, se cache un concept consistant à déporter sur des serveurs distants le stockage de données et/ou leur traitement. Les avantages peuvent être nombreux avec notamment :

  • une disponibilité des données à tout moment depuis tout type d’appareil connecté
  • une administration et une maintenance des serveurs gérées par le fournisseur de l’offre de « Cloud »
  • l’attribution automatique des ressources, de façon élastique en fonction des besoins

Dans le cas de la souscription à une offre de Cloud, l’inconvénient majeur est de ne plus avoir le contrôle total de ses propres données, en tout cas avec la plupart de ces offres.

On peut distinguer plusieurs niveaux de Cloud auxquels correspondent différents types d’offres, avec pour les principales :

  • le Saas (Software as a service) proposant un logiciel disponible à distance par abonnement plutôt que par l’octroie de licence et l’installation en local
  • le Paas (Platform as a service) proposant un environnement d’exécution pour des applications
  • le Iaas (Infrastructure as a service) mettant à disposition une machine sans aucune restriction, l’administration du système étant alors à la charge du souscripteur de l’offre
  • le Daas (Data as a service) qui permet le stockage distant de données

Les offres de Paas remportent de plus en plus de succès auprès des entreprises désireuses de trouver le meilleur compromis pour héberger et exécuter leurs applications. En effet, cette solution laisse à l’entreprise toute latitude pour le développement de ses applications tout en lui évitant les tâches fastidieuses, et coûteuses, d’installation, de maintenance et d’administration des serveurs.

Nous nous intéressons ici à OpenShift, l’offre Paas de RedHat qui entend concurrencer les géants en proposant une solution basée sur des logiciels libres et des formats ouverts, laissant l’entreprise maître de son application et de ses données, ces dernières pouvant être exportées vers d’autres environnements d’exécution.

OpenShift est en cours de développement et est pour le moment gratuit à utiliser à des fins de test. Les offres commerciales ne sont pas encore disponibles, les prix ne sont donc pas encore connus à l’heure où nous écrivons ces lignes. Par contre, il est d’ores et déjà permis d’expérimenter les possibilités offertes. Nous proposons d’en donner un aperçu dans la suite de l’article au travers d’une brève présentation et de la mise en place d’une application de démonstration.

2. Les points clés

Au même titre que les autres offres de Paas, OpenShift met à disposition du développeur un environnement d’exécution pour ses applications, et l’affranchit de la charge de l’hébergement des données et de l’administration et maintenance des serveurs. De plus, les ressources allouées peuvent s’adapter automatiquement à la charge de l’application.

La création d’un compte est gratuite, et s’effectue sur le site Web d’OpenShift1. Une fois le compte créé, on peut commencer à utiliser le service et à héberger des applications. Cependant, pour bien débuter avec l’offre de RedHat, il est nécessaire de se familiariser avec différentes entités auxquelles il est souvent fait référence :

  • Le Namespace : il est choisi par l’utilisateur pour son compte. Chaque application est associée à un sous domaine de « rhcloud.com » qui contient le nom de l’application ainsi que le namespace du compte OpenShift sous la forme : http://monapplication-monnamespace.rhcloud.com
  • Les Applications elles-mêmes
  • Les Cartridges : ce sont les modules proposés par OpenShift et qui viennent composer l’application. Ils peuvent être de nature très variée. Le langage choisi en est un, tout comme la base de données, mais il peut également s’agir d’un framework, d’un outil d’administration, d’un outil de gestion de tâches planifiées…
  • Les Gears : ce sont des conteneurs de ressources système. Un compte peut utiliser par défaut au maximum trois gears fournissant chacun 512 Mo de RAM et 1Go d’espace disque, soit au maximum 1,5 Go de RAM et 3 Go d’espace disque. Ces trois gears peuvent être attribués à la même application, ou à des applications différentes

Parmi les langages compatibles avec la plateforme, on retrouve Node.js, Ruby, Python, PHP, Perl et Java. Côté bases de données, MySQL, PostgreSQL et MongoDB (entre autres) sont de la partie.

Au delà de la simple exécution d’applications, OpenShift propose la compilation des applications Java (Baas, pour Build as a service), ou encore l’exécution de tâches planifiées.

figure1 Figure 1

figure2
Figure 2

Pour gérer les applications hébergées dans le Cloud, RedHat met à disposition deux outils. Le premier est l’interface Web d’administration, qu’on peut observer sur les captures d’écran Figure 1 et Figure 2. Elle permet de créer des applications, d’en supprimer, de gérer les Cartridges des différentes applications, etc. Le second outil, plus souple et complet, est un outil en ligne de commande dénommé rhc. Pour les utilisateurs de l’IDE Eclipse, RedHat met également à disposition un plugin permettant une intégration de rhc.

En plus de ces outils d’administration, un gestionnaire de versions est utilisé pour permettre la mise à jour des applications : il s’agit de Git. A chaque application correspond son référentiel Git. Dès qu’une mise à jour est faite sur le référentiel de l’application, ce qui se fait avec la commande « git push », l’application est redéployée et mise à jour.

Tous les échanges avec les serveurs de RedHat, que ce soit via l’utilisation de rhc ou de Git, sont sécurisés grâce au protocole SSH.

Dans la suite du présent article, consacrée à la création d’une première application, nous utilisons l’outil en ligne de commande qui offre plus de fonctionnalités et plus de souplesse que l’interface d’administration du site Internet.

3. Configuration

Nous réalisons dans cette partie une brève présentation de la gestion d’une application sous OpenShift. L’exemple retenu est la mise en place du moteur de blog WordPress dans une nouvelle application OpenShift. Cet exemple concret permet de déployer une application open source prête à l’emploi. Pour effectuer les différentes manipulations, nous utilisons l’outil en ligne de commande mis à disposition par RedHat, rhc. Celui-ci offre plus de souplesse et de possibilités que l’interface Web d’administration.

Après la création d’un compte sur le site officiel d’OpenShift, la première étape consiste à installer rhc sur l’environnement de développement. Pour cela, il faut se référer à la section de l’aide en ligne2 correspondant au système d’exploitation du poste de développement.

La commande rhc se connecte aux serveurs OpenShift via le protocole SSH. L’identifiant et le mot de passe OpenShift du développeur sont nécessaires à chaque utilisation de cet outil. Cependant, comme précisé ci-après, il est possible d’utiliser un identifiant par défaut, pour éviter sa saisie systématique.

Avant de pouvoir ajouter de nouvelles applications, il faut créer le namespace associé au compte. Pour rappel, les applications d’un compte sont accessibles par une URL de la forme :

http://monapplication-monnamespace.rhcloud.com

Il est préférable ici de procéder à la création du namespace par l’outil en ligne de commande. En effet, celui-ci s’occupe plus que la simple création du namespace : il configure le système pour l’utilisation d’OpenShift avec le compte donné. En cas de création du namespace par l’interface Web, cette configuration doit être effectuée manuellement par la suite.
En ligne de commande, la création du namespace s’effectue comme suit :
rhc domain create -n monnamespace -l mailchoisi@alinscription.fr

L’identifiant OpenShit, qui n’est autre que l’email utilisé pour la création du compte, est renseigné grâce à l’option « -l ». Lors de la création du namespace, le fichier de configuration « ~/.openshift/express.conf » est complété avec l’identifiant de l’utilisateur. Il n’est alors plus nécessaire de le renseigner lors de l’appel à la commande rhc. Par la même occasion, une paire de clés est générée pour la liaison SSH avec le serveur et la clé publique est téléchargée sur les serveurs de RedHat. Le fichier « ~/.ssh/config » est alors créé. La seule chose restant à faire pour finaliser la configuration consiste à ajouter la paire de clés générée dans un « ssh agent » en cours d’exécution de la façon suivante :

A partir de maintenant, tout est en place pour commencer à gérer des applications. Pour vérifier la configuration du système, on utilise la commande suivante :

Elle effectue les vérifications d’usage, et si tout se déroule normalement, elle retourne :

Dans le cas contraire, il faut se référer à la section de l’aide en ligne correspondant à l’erreur affichée.

4. Création d’une application

La création de l’application WordPress de démonstration s’effectue en deux étapes : la création et la configuration de l’application côté OpenShift, puis le téléchargement et l’ajout de WordPress à l’application précédemment créée.

Lors de la création d’une nouvelle application, il faut choisir un nom et un premier cartridge correspondant au langage de développement retenu, c’est à dire dans notre cas PHP qui est le langage ayant servi au développement de WordPress. Des cartridges supplémentaires peuvent être ajoutés par la suite pour étendre les fonctionnalités de l’application. Nous y avons recours ci-après pour l’ajout d’une base de données MySQL nécessaire à WordPress. Pour la création d’une nouvelle application, il est une nouvelle fois préférable d’utiliser rhc qui permet de configurer automatiquement l’application localement, et notamment SSH et Git. Lors de la création de l’application en ligne de commande, le référentiel Git de l’application est automatiquement cloné localement dans le répertoire courant. On commence donc par se placer dans le répertoire de développement souhaité avant de créer l’application :

Cette commande crée tout d’abord un répertoire au nom de l’application, ici « wordpress », dans le répertoire courant, ici « ~/Sites/OpenShift ». A l’intérieur du répertoire « ~/Sites/OpenShift/wordpress », le référentiel Git de l’application a été cloné automatiquement. On retrouve différents répertoires dont l’utilisation est détaillée dans l’aide en ligne. Retenons ici que le répertoire racine de l’application Web nouvellement créée est le répertoire « php ». C’est dans ce répertoire que doit être copié WordPress. Ce répertoire contient d’ailleurs déjà un fichier « index.php », et l’application par défaut est d’ores et déjà en ligne à l’adresse :

http://wordpress-monnamespace.rhcloud.com


Figure 3

Dans cette situation, « monnamespace » est le namespace associé au compte OpenShift. Si tout s’est bien déroulé, la page présentée en Figure 3 s’affiche.

Pour terminer la configuration de l’application, il faut installer le cartridge MySQL, ce qui peut bien évidemment se faire en ligne de commande :

Il est important de noter les informations d’accès à la base de données retournées par cette commande : elles sont nécessaires à la configuration de WordPress.

On peut remarquer que la base de données n’est pas accessible de l’extérieur, celle-ci étant uniquement utilisable par les applications OpenShift s’exécutant sur les serveurs de RedHat. Pour pouvoir l’administrer, il peut donc être intéressant d’ajouter l’outil phpMyAdmin, d’ailleurs disponible sous forme de cartridge.

Pour pouvoir déployer WordPress sur une instance d’application OpenShift, il faut commencer par l’ajouter en local. La dernière version de WordPress se télécharge à l’adresse :

http://wordpress.org/download/

Une fois téléchargée, l’archive (wordpress-3.3.2.zip dans notre cas) doit être décompressée. Elle contient un répertoire « wordpress » dont le contenu doit être placé à la racine de l’application Web OpenShift précédemment créée, à savoir « ~/Sites/OpenShift/wordpress/php/ ». Le système d’exploitation demande si l’on souhaite écraser le fichier « index.php » lors du processus de copie, ce que l’on confirme bien sûr pour le remplacer par le fichier « index.php » de WordPress.

Le répertoire « ~/Sites/OpenShift/wordpress/php/ » doit maintenant contenir l’ensemble des fichiers de WordPress. On les ajoute alors au référentiel Git local :

Puis on les envoie sur le référentiel  Git du serveur OpenShift :

Quelques instants plus tard, la mise à jour est effectuée sur les serveurs d’OpenShift, et la nouvelle installation de WordPress est disponible au lien précédemment évoqué :

http://wordpress-monnamespace.rhcloud.com

Il ne reste alors qu’à effectuer la configuration de WordPress en suivant les indications à l’écran. Les informations de connexion à la base de données ont été relevées précédemment. Attention cependant, le compte fourni par défaut pour MySQL est un compte administrateur. Dans le cas d’une application déployée en production, il est préférable de créer un nouvel utilisateur aux droits plus restreints.


Figure 4

WordPress est maintenant configuré et sa page d’accueil par défaut présentée en Figure 4 est visible par tous les visiteurs du site.
Seules les fonctionnalités de base d’OpenShift ont été utilisées dans cette courte introduction. Elles ne représentent bien évidemment pas tout l’éventail des possibilités. Il est par exemple possible de stopper ou redémarrer les applications, de les administrer, de les paramétrer, etc.

5. Conclusion

Cet article a permis de présenter OpenShift, une alternative de RedHat aux solutions Paas des géants Microsoft, Google ou encore Amazon. En terme de fonctionnalités, de langages et de moteurs de bases de données disponibles, OpenShift n’est pas en reste et se place même parmi les plus performants. Son utilisation est simple, intuitive si l’on choisit de passer par l’interface d’administration en ligne, mais aussi fine et poussée si l’on utilise l’outil en ligne de commande. Les applications sont exportables et utilisables dans un autre environnement, ce qui les rend indépendantes d’OpenShift. Jusqu’à maintenant, le service n’est malheureusement disponible qu’aux développeurs en vue de le tester, les offres commerciales n’étant pas encore proposées.

Il est possible de retrouver l’intégralité de cet article dans le numéro 153 du mois de Juin 2012 du magazine « Programmez ».

1Site officiel : https://openshift.redhat.com
2Aide en ligne : http://docs.redhat.com/docs/en-US/OpenShift/