Test du client Azure en ligne de commande

cloudIl est aujourd’hui beaucoup plus simple de mettre en ligne une application web qu’il y a quelques années. Et ce, pour un coût relativement faible, voire inexistant, grâce aux fournisseurs de Plateform As A Service (PaaS). Cet article est une bonne illustration qui montre comment initialiser et déployer une application web en quelques lignes de commande. C’est l’occasion aussi de consigner ma propre expérience qui n’a pas été sans encombre.

Pré-requis

En rédigeant ce tutoriel, je travaille sur MacOSX, mais les commandes s’appliquent aussi bien sur Windows ou Linux. Pour effectuer l’ensemble des manipulations, il faut au préalable :

  • Avoir un abonnement Azure actif.
  • Avoir installé et mis à jour NodeJS et NPM
  • Une invite de commande : Terminal sous OSX ou Powershell sous Windows.

Ensuite, installer quelques outils pour démarrer facilement un projet web:

  • azure-cli : le client azure en ligne de commande cross-platform.
  • Bower : gestionnaire de packages.
  • Grunt : lanceur de tâches.
  • yo: le couteau suisse du développeur Front-End. A lui seul, il référence des centaines de configurations possibles, selon les frameworks plus ou moins populaires.
  • Un générateur : extension de Yo suivant la stack de notre choix. Pour faire simple nous choisirons express-generator

Pour installer ces éléments, c’est très simple, il suffit exécuter la commande suivante:

> npm install --global  grunt-cli bower yo express-generator azure-cli

A noter que sur Linux ou OSX, pour des installations de niveau global depuis NPM il peut-être nécessaire de préfixer la commande par sudo .

Création du site sur le cloud et en local

Setup site distant, repo git et déploiement

La commande suivante ouvrira votre navigateur par défaut sur la page d’authentification du portail Azure.

> azure account download

Une fois authentifié, un fichier *.publishSettings est automatiquement téléchargé. Ce fichier servira à s’authentifier à votre compte en lançant la commande suivante:

> azure account import <CHEMIN_VERS_LE_FICHIER_TELECHARGE>

Pour déployer sur azure à partir d’un répertoire local, nous allons initier un référentiel git sur azure et ensuite le synchroniser à un répertoire local. Pour pusher, il faudra spécifier un utilisateur, et c’est le but de la commande suivante :

> azure site deployment user set fromideatoclouduser -p <MOT_DE_PASSE>

Ça plante, mais ça marche ! Si la dernière commande échoue : à moins que le message n’indique que le user est déjà attribué, il se peut que ce soit une fausse erreur, et que le user ait bien été enregistré, donc nous pouvons continuer.
Les commande suivantes créent un répertoire local, et une appli web dans Azure.
> mkdir fromideatocloud
> cd fromideatocloud
> azure site create fromideatocloud --location "West Europe" --git --gitusername fromideatoclouduser
Voici le résultat de la dernière commande :
info: Creating a new web site at fromideatocloud.azurewebsites.net
-info: Created website at fromideatocloud.azurewebsites.net
+
info: Executing `git init`
info: Creating default iisnode.yml file
info: Initializing remote Azure repository
+ Updating site information
info: Remote azure repository initialized
+ Getting site information
info: Executing `git remote add azure https://fromideatoclouduser@fromideatocloud.scm.azurewebsites.net/fromideatocloud.git`
info: A new remote, 'azure', has been added to your local git repository
info: Use git locally to make changes to your site, commit, and then use 'git push azure master' to deploy to Azure
info: site create command OK

Comme nous pouvons le constater le site web a été créé à l’adresse http://fromideatocloud.azurewebsites.net et un référentiel git initialisé localement (git init) ainsi que dans Azure, puis ajouté comme source distante à notre répertoire. (git remote add ...) .

Si nous avions préalablement initialisé un référentiel git, la commande azure aurait simplement ajouté le référentiel distant comme source remote.

Pour terminer : la commande suivante permet de créer un script deploy.sh (ou deploy.cmd sur Windows) qui sera exécuté à chaque push pour déployer et relancer dans azure :

> azure site deploymentscript --node
Le script généré n’a pas vocation à être modifié.

Génération du code source en local

Exécuter la commande suivante et sélectionner les options comme présentées ci-dessous.

> yo express
? Select a version to install: Basic
? Select a view engine to use: Jade
? Select a css preprocessor to use (Sass Requires Ruby): Node-Sass
? Select a build tool to use: Grunt

Si la dernière commande tourne mal au moment de l’installation des modules (ce qui m’est arrivé), il est possible de lancer manuellement npm install suivi de  bower install.

Depuis ma machine, npm install échouait au moment d’installer le module jade, parce qu’il lui manque la lib acorn version 0.11 au niveau global. N’ayant pas trouvé de traces de ce problème sur le net, je poste alors ici ma solution, ça peut servir :sudo npm install -g acorn@0.11.0.

Une fois le site initialisé, lancer tout simplement la commande suivante, qui permet exécuter l’application web localement :

> grunt

Vous pouvez vous rendre sur http://localhost:3000 (par défaut, sinon modifier le fichier bin\www) et constater que le site est fonctionnel, et prêt à être déployé.

Déployer

Note site est crée et prêt à l’emploi. Les commandes suivantes permettent de version d’envoyer le code dans le référentiel git sur Azure. Il sera ensuite compilé, déployé et accessible en ligne :

> git add .
> git commit -m "Premier déploiement"
> git push azure master

Il ne reste plus qu’à constater le site en ligne, soit en copiant l’url créée plus tôt, soit en tapant la commande suivante :

> azure site browse fromideatocloud

Voilà c’est fait. Maintenant on peut se concentrer sur le contenu de notre projet.

 

Et ce n’est pas fini

En fait si… mais pour synthétiser tout çà : à mon sens, le client Azure répond parfaitement aux standards du développement web, d’autant qu’il supporte de base les outils comme Bower et Grunt dans la stack NodeJS.

Pour ne pas alourdir cet article, je ne suis pas allé plus en détails sur la boîte à outils du développeur Front-End, qui vaudrait à elle- seule un ou plusieurs articles.

Pour approfondir les options du client azure, la documentation officielle reste un très bon point de départ:

http://azure.microsoft.com/en-us/documentation/articles/xplat-cli/

 

Tags: Azure, nodejs,

Pas de commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *