Weblog MSDN de Thomas Conté

Le Weblog MSDN de Thomas Conté, en français.

VM Role Windows Azure - 4ème partie: déploiement de la machine virtuelle

VM Role Windows Azure - 4ème partie: déploiement de la machine virtuelle

  • Comments 2

Nous voici arrivés au quatrième et dernier épisode de la saga du VM Role! Dans les précédents épisodes, nous avons préparé puis envoyé à Windows Azure un VHD contenant notre machine virtuelle. Il est maintenant temps de la déployer!

  1. Préparation de l’environnement de virtualisation local
  2. Préparation de la machine virtuelle
  3. Préparation au déploiement
  4. Déploiement de la machine virtuelle

Nous avons terminé la partie “infrastructure”, nous allons donc pouvoir passer à la partie “développement”! En effet, l’idée du VM Role est que votre machine virtuelle devient un Rôle comme un autre au sein de votre application Windows Azure, au même titre que le Web Role ou le Worker Role. Si vous avez besoin d’un petit rafraîchissement sur ces rôles de base, n’hésitez pas à vous reporter au Coach MSDN Windows Azure qui couvre en détail ces composants.

Qui dit développement, dit bien sûr Visual Studio! Nous allons donc développer une mini-application Windows Azure simplement pour utiliser notre VM Role. A noter que nous nous mettons maintenant dans la peau du développeur, qui n’aura plus besoin (a priori) de modifier la machine virtuelle, donc plus d’Hyper-V, de sysprep, etc.

Notez cependant qu’il serait parfaitement possible de déployer notre VM Role tout seul, à la main, en créant les fichiers de configuration XML et en utilisant les outils en ligne de commande du SDK… Ce sera peut-être le sujet d’un prochain post!

Commençons donc par lancer Visual Studio 2010 et créer un nouveau projet Windows Azure. Je vais y ajouter un Web Rôle ASP.NET MVC et c’est tout; je vais donc obtenir quelque chose comme cela:

image

Vous allez maintenant pouvoir ajouter le VM Role: cliquez avec le bouton droit sur le répertoire Roles, puis choisissez “Add VM Role…”. Attention: si vous ne voyez pas cette option dans le menu contextuel, c’est que vous avez peut-être ignoré les instructions qui figuraient dans le mail de confirmation de votre inscription au programme Beta: cet e-mail contient en effet un lien vers un fichier .reg qui va activer l’option VM Role dans la base de registres!

image

Nous voici dans le panneau de configuration de notre VM Role.

image

Nous avons une seule chose à faire: choisir le VHD que nous avons envoyé dans l’épisode précédent! Mais pour ce faire, nous devons paramétrer la connexion sécurisée par certificat pour Visual Studio. Dans la précédente étape, nous avons configuré cette connexion pour l’outil csupload, il nous faut faire la même chose pour l’environnement de développement. Nous pourrions bien sûr créer un installer un nouveau certificat, ce qui serait d’ailleurs une bonne idée dans la vraie vie, afin de pouvoir contrôler séparément les accès des administrateurs systèmes et ceux des développeurs.

Si vous êtes sur la même machine que celle que vous avez utilisé pour envoyer le VHD, le certificat est déjà présent dans votre Personal Store. Si vous avez changé de machine entre-temps, vous allez exporter le certificat de votre machine Hyper-V puis l’installer sur votre machine de développement.

Une fois ceci fait, vous pouvez aller dans “Select or create your Windows Azure account credentials…” et choisir “Add…”.

image

Dans le dialogue suivant, sélectionnez votre certificat dans le premier menu.

image

Inutile de le renvoyer dans Windows Azure, il y est déjà!

Copiez votre Subscription ID dans le contrôle “3”. Pour rappel, vous trouverez votre Subscription ID sur le portail Web d’administration.

Et voilà, votre connexion est configurée. Vous devez maintenant voir votre (ou vos) VHD dans le menu déroulant “Select a VHD…”:

image

Au-delà du VHD à utiliser, l’on peut bien entendu configurer les autres paramètres d’un hébergement Windows Azure, et notamment les suivants qui seront certainement bien utiles pour le VM Role:

  • Le nombre d’instances et la taille de la machine virtuelle
  • Les Endpoints, qui permettent de configurer des ports d’écoute (TCP ou HTTP), aussi bien en interne qu’en externe – évidemment nécessaire si votre VM Role expose un service quelconque
  • Le Virtual Network (ou Windows Azure Connect), qui permettra de monter un VPN entre votre VM Role et des machines restant dans votre réseau local

Voilà, les bases de notre application sont en place. Bien entendu, c’est le moment où, normalement, l’on commence à développer l’application qui va utiliser votre VM Role pour faire des choses… Dans notre cas, nous allons nous arrêter là et déployer l’application afin de voir notre machine virtuelle tourner dans le nuage. Je reviendrai dans de prochains articles sur les techniques à utiliser pour exploiter le VM Role au sein d’une application plus large, et notamment, comment se connecter à un service tournant dans la machine virtuelle.

Pour le moment, faites donc un clic-droit sur le Projet Windows Azure, puis choisissez “Publish…”

image

Pour un premier test, je vous conseille de configurer l’accès Remote Desktop afin de pouvoir vous connecter à votre machine virtuelle; j’ai déjà publié un billet sur la marche à suivre, donc allez lire “Utiliser la Connexion Bureau à Distance avec Windows Azure et le SDK 1.3”. (l’article reste valable en SDK 1.4)

Après quelques minutes de patience, vos Rôles vont démarrer, et vous pouvez suivre l’opération depuis le portail d’administration:

image

Une fois toutes les instances démarrées, vous aurez accès à l’icône Remote Desktop, et vous allez enfin pouvoir vous connecter à votre machine!

image

Voilà qui conclut cette série d’articles. J’espère qu’ils vous aideront à évaluer le VM Role et à le mettre en oeuvre dans vos projets.

  • Merci pour les 4 articles sur cette description détaillée de l'utilisation du VMRole !

    Très bien expliqué et très utile.

    Je profite de l'occasion pour vous faire part de questions/remarques :

    - Y a-t-il une visibilité sur la sortie de la BETA de cette fonctionnalité qui me paraît indispensable pour couvrir un scope plus complet d'applications (même si cela sort un peu du concept PaaS) ?

    - La manipulation, même si très compréhensible quand bien expliquée, est tout de même un peu "repoussante" à la première approche : une version "online" (via connexion remote) de tuning d'une image de base (celle utilisée pour les WebRole et WorkerRole) avec possibilité de re-imaging online serait intéressante. Elle permettrait de s'affranchir de la création/upload des VHD (dynamique puis différentiel), de l'installation de tous les composants standards et des Sysprep & Co. Cela permettrait également de maintenir (en respectant certaines restrictions) la gestion des patchs sur l'OS.

    - Je suis conscient de l'intérêt de passer au maximum par les WebRole et WorkerRole : concernant des installations complexes (ne nécessitant pas de reboot d'instance), avez vous des exemples de scipts (PowerShell par exemple !) à lancer dans les startup tasks manipulant des fichiers de configuration (remplacement de contenu sur regexp, ...), récupérant des éléments sur un Blob Storage pour les copier dans un répertoire spécifié ou les exécuter, ... ?

    En tout cas encore merci pour les articles.

              Frédéric FAURE

  • Bonjour Frédéric et merci pour ces commentaires :-)

    La fonctionnalité VM Role est encore en Beta, et nous avons très clairement de nombreux retours clients très similaires à vos remarques. Les équipes produit travaillent sur une version "finale" qui prendra en compte tous ces retours.

    Pour l'instant, il est vrai que les Web et Worker Role restent les outils principaux de déploiement sur Azure. Un bon exemple d'utilisation des Startup Tasks se trouve par exemple dans la dernière version du SDK PHP pour Windows Azure (http://phpazure.codeplex.com/). Une startup task est utilisée pour télécharger et installer automatiquement l'interpréteur PHP et autres pré-requis sur l'instance.

    Cordialement,

    Thomas.

Page 1 of 1 (2 items)
Leave a Comment
  • Please add 6 and 6 and type the answer here:
  • Post