Wer hat sich beim Entwickeln für Windows Azure noch nicht darüber geärgert, dass es bislang noch keine Möglichkeit eine WebDeploys gab? Auch bei der kleinsten Änderung an einer Role musste diese komplett neu deployed werden, d.h. Wartezeit von 5-10 Minuten. Doch diese Zeiten sind nun (endlich) vorbei!

Für das Windows Azure SDK 1.4 ist ein Refresh verfügbar, welches nun endlich Web Deploy Integration bietet.

Die Nutzung von Web Deploy erfolgt in folgenden Schritten:

  1. Installation des Windows Azure SDK 1.4 Refresh
  2. Anlegen eines Windows Azure Hosted Service
  3. Installation eines Zertifikats für Remote Desktop
  4. Service Deployment mit Aktivierung von Remote Desktop und Web Deploy
  5. Web Deploy
     

Installation des Windows Azure SDK 1.4 Refresh

Das Web Deploy Refresh für Windows Azure SDK 1.4 kann von hier heruntergeladen und installiert werden.

Anlegen eines Windows Azure Hosted Service

Auf dem Windows Azure Management Portal kann ein normaler Hosted Service angelegt werden. Für meine weiteren Ausf��hrungen habe ich einen Service für den URL http://hsirtlwebdeploy.cloudapp.net/ angelegt.

NewHostedService
Abb 1: Anlegen eines neuen Hosted Service

Installation eines Zertifikats für Remote Desktop

Dem Service muss noch ein Zertifikat für Remote Desktop (dies kann z.B. mit Visual Studio erzeugt werden) installiert werden.

AddCertificate
Abb 2: Installation eines Zertifikats für Remote Desktop

Service Deployment mit Aktivierung von Remote Desktop und Web Deploy

Jetzt kann ein neuer oder bestehender Cloud Service über Visual Studio deployed werden. Hierbei müssen in der Publish-Maske von Visual Studio sowohl Remote Desktop als auch Web Deploy aktiviert sein (Web Deploy lässt sich erst auswählen, nachdem Remote Desktop konfiguriert wurde).

Publish
Abb 3: Service Deployment mit Aktivierung von Remote Desktop und Web Deploy

Web Deploy

Jetzt kann in der Web Role eine Änderung vorgenommen werden, die dann per Web Deploy installiert werden kann. Hierzu mit der rechten Maustaste das Web Role Projekt anklicken und im Kontextmenü den Punkt “Publish…” auswählen. In der Eingabemaske folgende Eingaben machen:

  • Publish method: Web Deploy
  • Service URL: https://<ServiceName>.cloudapp.net:8172/Msdeploy.axd
  • Site/application: <RoleInstanceName>_<WebApp> (z.B. WebRole_IN_0_Web)
  • Allow untrusted certificate: Ja
  • User name: <Remote Desktop Username>
  • Password: <Remote Desktop Password>
     

In meinem Beispiel sieht die Web Deploy Maske wie folgt aus:

WebDeploy
Abb 4: Web Deploy

Danach kann die Änderung der Webanwendung angezeigt werden. Voilà, so einfach geht’s!

Einschränkungen

Bei der Nutzung von Web Deploy ist folgendes zu beachten: Das Web Deployment hat die gleiche Auswirkung, als würde man sich per Remote Desktop auf einer Instanz einloggen und dort eine Änderung (z.B. an einer ASP.NET Datei vornehmen). Im einzelnen heißt dies:

  • Web Deploy funktioniert mit einer einzelnen Rolleninstanz (also nicht gleichzeitig für alle Instanzen einer Rolle)
  • Diese Art des Deployments ist nur für die iterative Entwicklung und Test gedacht
  • Änderungen, die über Web Deploy installiert werden sind nicht dauerhaft, d.h. bei einem Re-Image gehen diese Änderungen verloren. Sollen die Änderungen dauerhaft sein, muss ein neues Installationspaket erzeugt und deployed werden.
     

Weitere Informationen