Azure virtuelle Maschine mit PowerShell erstellen

Einleitung

Es gibt verschiedenste Wege in Azure Ressourcen zu erstellen. Die meisten beginnen mit dem Azure Dashboard, wo man sich über den Marketplace einfach eine Ressource zusammen klicken kann. So auch beim Thema IaaS – Infrastructure as a Service was auch die klassischen VMs beinhaltet.

Wer sich schon eine Linux oder Windows VM im Dashboard zusammen geklickt hat- sieht schnell das es im Dashboard Limitierungen gibt:

  • Namenskonvention ist nicht durchgehend da man nicht alle Komponenten, wie z.B. ein Netzwerkadapter im Dashboard benennen kann. Dies führt dazu, dass Azure selbst Namen konstruiert. Dies ist ab einer bestimmten Grösse wo man auch ein Namenskonzept verfolgt unbrauchbar.
  • Man kann immer nur eines auf einmal machen, also keine Möglichkeit zu sagen ich will 10 von denen von Anfang an.
  • Es ist zeitintensiv

Daher kommt schnell der Wunsch nach Automatisierung. Sexy wäre dies alles in ARM Templates zu machen- so wie es auch der Azure Resource Manager selbst macht. Alles was in Azure deployt wird, basiert eigentlich auf solchen ARM Templates. Das Problem bei ARM Templates ist zumindest für jemanden der keinen DEV Hintergrund hat, die Komplexität. Die meisten die nicht wirklich Programmier- Affin sind, werden hier wohl scheitern.

Daher finde ich nach wie vor die Azure PowerShell eine gute Sache. PowerShell können viele, ist ausreichend dokumentiert und man kommt relativ schnell an ein Ziel. Ich persönlich mache viel in PowerShell da es mir persönlich am meisten taugt.

Vorbereitungen

Um loslegen zu können braucht ihr natürlich einen Azure Tenant den ihr nutzen könnt und eine Client Maschine.

PowerShell

PowerShell in Windows

Arbeitet ihr auf einer Windows Maschine, ist PowerShell sowieso vorhanden und ihr müsst nur noch die entsprechenden Module installieren und laden.

PowerShell auf Linux, macOS, ARM

Dadurch das PowerShell als PowerShell Core OpenSource ist, könnt ihr PSCore auch auf Linux, macOS oder ARM Systemen installieren. So kann man eigentlich von überall her seine Scripts gegen Azure laufen lassen. Mehr zu PowerShell Core hier: https://aka.ms/pscore6

AzureRM vs AzureAz$

Ursprünglich waren die AzureRM CMDlets für Azure Scripts da. Als Microsoft jedoch den Weg in Richtung PowerShell Core eingeschlagen hat, musste ein Modul her, dass eben auf jeder Plattform lauffähig ist. Daher wurde das Az Modul geschaffen. 

Das RM Modul wird nur noch bis 2020 weiterentwickelt, daher konzentriere ich mich in diesem Beitrag auf das Az Modul. Wer das Az Modul installieren will oder das RM schon installiert hat, sollte sich die Informationen zum handling durchlesen: Introducing the new Azure PowerShell Az module

Parameter

Ich befasse mich mit PowerShell Scripts in der Tiefe erst seit einigen Monaten. Um nicht den Überblick zu verlieren und um vor allem ein Script immer wieder anwenden zu können, arbeite ich mit Variablen in diese ich alle Informationen schreibe dich ich benötige. Am liebsten arbeite ich hier mit Hash Tables, dies ist eine Variable, in die man verschiedene Parameter abspeichern kann. Das macht das ganze übersichtlicher und ich laufe nicht Gefahr eine Variable zu nutzen die ich vorher schon im Script für was anderes genutzt habe. Es gibt verschiedenen Möglichkeiten wie man Daten in eine solche Hash Table schreibt, die nachfolgende ist die die auch mit den Az Modulen zusammen funktioniert, sprich der Parameter auch innerhalb des Scripts richtig wieder gegeben wird.

Hier habe ich mal ein Beispiel eines Grundgestells das ich für VMs nutze. Jede Zeile schreibt einen Parameter in die Hash Table. Der Name des Parameters in ‹ ‹ gefolgt von einem Koma und dann der Wert wiederum in ‹ ‹.

Wir legen los

Wenn wir nun alle Parameter abgefüllt haben, legen wir mit dem Deployment los.

Natürlich kann man dies nun noch ausbauen, aber ein bisschen etwas möchte ich euch auch noch selber überlassen 😉

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert