samedi 28 mai 2011

Da Cloud made eZ...

Petit coup de coeur du moment : Dotcloud
Ce site offre gratuitement (le temps de la beta) un accès à une infrastructure scalable, sa force c'est principalement son extrême simplicité  :
(j'ai déjà dit que c'était gratuit en beta ?)


D'abord s'inscrire sur le site en laissant son adresse email, pour recevoir un code d'accès...
Une fois ce code reçu, on finit l'inscription et récupère la clef d'API qui se trouve dans 'settings', cette clef sera demandée à la première utilisation de dotcloud.

On installe le client python (nul n'est parfait ;-) )
sudo easy_install dotcloud

On crée une application (je l'appelle easylearn)
dotcloud create easylearn

On affiche la liste des types de services disponible
dotcloud deploy -h

Pour déloyer un service Perl (ici appellé www)
dotcloud deploy -t perl easylearn.www

Et un service base de données (nommé dans ce cas db)
dotcloud deploy -t mysql easylearn.db

Notez que j'aurais pu nommer les services frontoffice et backoffice, les noms sont complètements libres.

Pour lister les application et services
dotcloud list

Pour afficher des informations sur un service
dotcloud info easylearn.www

L'infrastructure étant prêt du coté "cloud", occupons nous du contenu :

Sur ma machine je crèe un squelette d'application 
catalyst.pl EasyLearn
ou si vous n'utilisez pas Catalyst
mkdir EasyLearn

Puis on se positionne dans le répertoire
cd EasyLearn

Tant qu'on y est, on transforme ce répertoire en repo git
git init
git add .
git commit -a -m 'Initial commit'

Le service Dotcloud s'appuyant sur PSGI (le WSGI à la sauce Perl), il faut configurer l'application Catalyst pour l'utiliser.

Je me suis basé sur l'excellent blog de garu
(http://onionstand.blogspot.com/2011/04/catalyst-in-cloud.html) qui donne la marche à suivre :

D'abord on crée un lien entre le répertoire static de Catalyst et le répertoire static attendu par l'infrastructure dotcloud :
ln -s root/static static

Puis on installe un moteur PSGI pour Catalyst:
sudo cpan Catalyst::Engine::PSGI
script/easylearn_create.pl PSGI


Enfin on crée un lien entre le fichier crée et le fichier app.psgi attendu par dotcloud
ln -s script/easylearn.psgi app.psgi

Puis on ajoute "use lib 'lib';" au fichier app.psgi,  juste avant "use EasyLearn;" pour que l'application soit trouvée.

Pour faire propre on en profite pour rajouter, la dépendance à Makefile.PL.
requires 'Catalyst::Engine::PSGI';
On devrait avoit un site fonctionnel il est temps de l'envoyer vers le Cloud.
dotcloud push easylearn.www .


Une chose sympa sympa c'est que si le répertoire contient un répertoire .git ou .hg, dotcloud le détectera et fera un git/hg push.
Cela veut aussi dire que si votre répertoire est versionné par git ou mercurial, seuls les fichiers commités seront pushés vers le cloud.

Et au cas où vous auriez une erreur :
dotcloud logs easylearn.www

Dans mon cas la lecture des logs m'a permis de me rendre compte que j'avais oublié certaines dépendances dans mon Makefile.PL :
Catalyst::View::TT
Catalyst::Model::DBIC::Schema

Une modif, un commit et un dotcloud push plus tard, je pouvais accéder à mon site via :
http://www.easylearn.dotcloud.com/

Simple non ?

Aucun commentaire :