Mise en oeuvre d'un environnement JAVAEE avec REDHAT OPENSHIFT EXPRESS

2011-08-12-Red-hat.jpgREDHAT a sorti il y a quelques temps openshift une plateforme PAAS permettant d'héberger des environnements JAVA, RUBY, Python, NODE.JS ou encore PHP.

En attendant de passer mon blog ( pourquoi pas...) sur cet environnement, voici la marche à suivre pour installer une application JAVAEE sur l'environnement de REDHAT.

Pré-requis

Avoir cygwin sous windows ( j'aime...) ,être sous gnu/linux ou mac os

Installation des rubygems

  1. $ruby <path_to_extracted_rubygems>/setup.rb install
  2. $gem install rhc

Création d'un domaine

Un domaine est, grosso merdo un regroupement d'applications au sein d 'une URL. Vous aurez au final : <votre application>-<votre domaine>.rhcloud.com

  1. rhc-create-domain -n mondomaine -l monloginredhat -d

Création de l'application

Par défaut, Openshift Express crée un référentiel GIT embarqué. Vous pouvez aussi brancher votre référentiel local sur un autre référentiel distant. A vous de synchroniser synchroniser le tout ensuite...

J'ai crée une application hébergée sous JBOSS avec un serveur POSTGRESQL.

La ou Redhat innove, c'est qu'on a le choix des technologies :

  • java/jboss as
  • nodejs
  • php
  • ruby on rails
  • python

Coté stockage des données idem:

  • mongodb
  • mysql
  • postgresql

Voici les manipulations:

$rhc app create -a monapp -t jbossas-7 -l maillogin -p motdepasse -d
$rhc app cartridge create -c mysql-5.1 -a monapp -l maillogin-p motdepasse 

A ce stade, vous pouvez :

  • vous connecter en SSL sur votre cloud (yeeeaahhhhh)
  • accéder à la base de données (ici avec pgsql)
  • configurer votre instance jboss

Configuration de la base

Pour connaître l'état de la base fraîchement crée

$rhc app cartridge status -p motdepasse -a monapp -c postgresql-8.4

Dans le fichier .openshift/config/standalone.xml

Ajouter, si ce n'est pas déjà fait la configuration suivante :

  1. <datasource jndi-name="java:jboss/datasources/PostgreSQLDS" enabled="${postgresql.enabled}" use-java-context="true" pool-name="PostgreSQLDS" use-ccm="true">
  2. <connection-url>jdbc:postgresql://${env.OPENSHIFT_DB_HOST}:${env.OPENSHIFT_DB_PORT}/${env.OPENSHIFT_APP_NAME}</connection-url>
  3. <driver>postgresql</driver>
  4. <security>
  5. <user-name>${env.OPENSHIFT_DB_USERNAME}</user-name>
  6. <password>${env.OPENSHIFT_DB_PASSWORD}</password>
  7. </security>
  8. </datasource>
  9.  
  10. <drivers>
  11. <driver name="h2" module="com.h2database.h2">
  12. <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
  13. </driver>
  14. <driver name="mysql" module="com.mysql.jdbc">
  15. <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
  16. </driver>
  17. <driver name="postgresql" module="org.postgresql.jdbc">
  18. <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
  19. </driver>
  20. </drivers>
  21. </datasources>

Upload des sources et build

La je trouve que c'est élégant par rapport aux autres solutions PAAS.

Il suffit d'effectuer la commande :

$git push

pour que l'upload des sources soit effectif et que le build soit lancé coté serveur :)

Bref vous n'avez plus à gérer le build coté client et une connexion (s)ftp pour envoyer le livrable.

Pour vérifier que tout va bien et que le livrable s'est bien déployé vous pouvez vous connecter en ssh et faire un tail sur le fichier de log ou lancer la commande suivante

$rhc app tail -a monapp -l monlogin -p monpassword -f lefichierquejeveuxtracer

Conclusion

Vous aurez sans doute compris que je trouve cette solution assez élégante et puissante. De prime abord, ca fait un peu la solution cloud pour les gros barbus. Contrairement à google app engine, redhat laisse le choix des technologies. J'ai même déployé un serveur joomla assez facilement ( je pense mettre la marche à suivre dans un prochain billet ). Seul petit bémol, on ne peut pas utiliser de jdk7, Je m'étais bien habitué aux nouveautés du projet coin.

Vus : 1848
Publié par Littlewing : 368