Neben den neuen und umfangreichen Möglichkeiten Microsoft Azure zu automatisieren (Teil 1, 2, 3) bleiben natürlich auch ganz erprobte und einfache Mittel, Websites zu deployen: mit den guten, alten File Transfer Protocol.
Dieser Weg ist vielfach bekannt und kann mit wenig Aufwand (da FTP ja in Windows eingebaut ist) verwendet werden, um verschiedene lokale Deployments zu verwenden.
Per FTP Client
Dazu wird zunächst von der existierenden Website das Publish Profile downgeloadet.
Das heruntergeladene File (bei mir miniblog2.azurewebsites.net.PublishSettings) beinhaltet die relevanten Daten für die Web- und FTP-Verbindung – hier gelb markiert.
Diese Daten können in einen FTP-Client (wie etwa im freien FileZilla oder auch im Windows Explorer) verwendet werden, hier im Beispiel mit FileZilla.
Es funktioniert Plain FTP – oder besser: FTP mit Encryption: Require implicit FTP over TLS.
FTP automatisiert
Zum Automatisieren kann ein FTP-Script erstellt werden. Ein Nachteil dabei ist, dass das FTP-Kennwort dann im Klartext in einem File gespeichert ist – also nicht sehr sicher. Aber funktionell.
Hierfür ist es empfohlen, die Deployment-Einstellungen zurückzusetzen. Das erfolgt im Dashboard der Website rechts mit dem Link Reset your deployment credentials.
Nun kann ein FTP Username und ein eigenes Kennwort vergeben werden.
Aus den Daten (im Screenshot oben rot eingerahmt) erstellen wir dann in einem Verzeichnis C:\Demo\ftpdeploy ein Kommandofile ftpdeploy.cmd und ein Scriptfile ftpdeploy.txt.
Das Kommandofile ftpdeploy.cmd sieht so aus:
ftp -v -i -s:C:\Demo\ftpdeploy\ftpdeploy.txt
Die FTP-Parameter bedeuten:
-v - Suppresses verbose display of remote server responses.
-i - Turns off interactive prompting during multiple file transfers.
-s:filename - Specifies a text file containing ftp commands; the commands will automatically run after ftp starts. No spaces are allowed in this parameter. Use this switch instead of redirection (>).
Das Scriptfile ftpdeploy.txt beinhaltet dann die eigentlichen FTP-Befehle:
open waws-prod-db3-003.ftp.azurewebsites.windows.net
miniblog2\tonipohl
MeinFTPKennwort123
pwd
cd site\wwwroot
lcd web
binary
mput *.*
mkdir bin
cd bin
mput bin\*.*
cd ..
close
quit
Die Funktionsweise: Die FTP-Site wird geöffnet, gefolgt von Username und dem Kennwort. Danach wechseln wir am Server in das wwwroot-Verzeichnis (wo das Web gespeichert wird) und am lokalen Rechner in das Unterverzeichnis web (wo unser Web-Deployment von Visual Studio liegt).
Der ganze Inhalt wird dann mit mput upgeloadet. Leider unterstützt mput keine Verzeichnisse und kann nicht rekursiv verwendet werden (Abhilfe kann ev. http://www.ncftp.com/ unter Windows mit http://cygwin.org/ mit mput -r * schaffen). Somit muss jedes Verzeichnis einzeln erstellt und kopiert werden, aber wie heisst es so schön: you get the idea.
Mit mget werden Dateien von der Website nach dem gleichen Muster heruntergeladen.
Danach wird die FTP-Verbindung geschlossen und FTP beendet.
Aufgerufen wird das Script dann mit ftpdeploy.cmd.
Diese Methode über FTP funktioniert auch gut für Webs in anderen Systemen oder Sprachen oder wo es keine Tools-Unterstützung für Azure Automation gibt.
Auto-Deploy
Egal welche Methode man wählt: Automatisierung hilft Fehler zu vermeiden und beschleunigt den Deployment-Prozess erheblich. So unterstützt Azure viele Varianten zur Automation und ist eine erstklassige, skalierbare Plattform für PaaS, IaaS und eigene SaaS-Lösungen.