Deployments per Web

Seltsamer Titel, aber mir ist nichts Besseres eingefallen... Es soll darum gehen, wie man Deployments in Azure per Klick auf einen Link starten kann. Der Klick führt dann zur Login-Seite des Azure-Portals, und frägt nach erfolgreichem Login dann die einzelnen Parameter ab, die im Template definiert wurden. Ein super-einfacher Weg, um entsprechende Templates zur Verfügung zu stellen, die Flexibilität bzgl. Namen der VMs etc zu bewahren, und das Deployment auch noch gleich im richtigen Context, also der Subscription des Benutzers, auszuführen. Interessiert?

Schaut man sich die Azure-Quickstart Templates auf GitHub an, dann steht dort immer (oder meistens) ein kleines Icon in der Readme.md, mit dem man das Deployment starten kann. Wie funktioniert das und wie man das für eigene Zwecke verwenden? Nun, schauen wir uns mal den HTML-Text den Links genauer an (umgebrochen, damit es besser lesbar ist):

[code autolinks="false" light="true"]
<a href="https://portal.azure.com/#create/Microsoft.Template/uri/
https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2Fazure-quickstart-templates%2Fmaster%2Fvm-simple-rhel%2Fazuredeploy.json"
target="_blank">
<img src="https://azuredeploy.net/deploybutton.png"/>
</a>

In der Mitte sehen wir den HTML-Tag für das Image, das ignorieren wir mal. Uns interessiert der Link um das Image herum. Und der fängt mit einem Aufruf des Portals an, gefolgt vom Kommando "create", der Angabe "Microsoft.Template" und der "uri". Ganz am Ende kommt dann noch das Target, also ein neuer Tab im Browser.

Nach "uri" kommt die Adresse, wo das Template gefunden werden kann. Hierbei werden, wie in URLs üblich, Sonderzeichen ersetzt durch den entsprechenden Zeichencode mit vorangestelltem "%". Dabei sind die beiden Wichtigsten:

  • 3A: Der Doppelpunkt ":"
  • 2F: der Slash "/"

Wir sehen also die codierte URL von:
[code autolinks="false" light="true"]
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/vm-simple-rhel/azuredeploy.json

Das war eigentlich auch schon das ganze Geheimnis. Wir wenden das gleich mal auf einen Link auf ein eigenes Template an, hier auch wieder auf GitHub. Ausgang ist die Klartext-URL:

[code autolinks="false" light="true"]
https://raw.githubusercontent.com/gitralf/mytemplates/master/101-vm-simple-rhel/azuredeploy.json

Bitte beachten bei Links auf GitHub: Der Link muss auf die "Raw"-Version zeigen, wir brauchen schließlich nicht das Drumherum, sondern nur den eigentlichen Text des Templates. Also dann, jetzt die Doppelpunkte und Slashes ersetzen, und wir erhalten:

[code autolinks="false" light="true"]
https%3A%2F%2Fraw.githubusercontent.com%2Fgitralf%2Fmytemplates%2Fmaster%2F101-vm-simple-rhel%2Fazuredeploy.json

Jetzt noch die restlichen Teile der Deployment-URL davor und dahinter, und das war es auch schon. Wir setzten mal noch einen drauf und machen das Deployment für die Microsoft Cloud Deutschland. Dazu brauchen wir lediglich noch die URL des Portals, und die ist https://portal.microsoftazure.de/.

Damit erhalten wir:
[code autolinks="false" light="true"]
https://portal.microsoftazure.de/\#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fgitralf%2Fmytemplates%2Fmaster%2F101-vm-simple-rhel%2Fazuredeploy.json

und können jetzt den Link direkt in anderen Webseiten verwenden, zum Beispiel im laufenden Text einfach hinterlegen. Oder natürlich ein Bildchen hinterlegen: