Der Klassiker und speziell mein Use Case für alle SharePoint Firmen und Berater. Ich brauche eine Spielwiese bestehend aus den unterschiedlichsten SharePoint Umgebungen. Daher habe ich ein PowerShell Modul Virtual Machine Duplicator aus einer Kundenanforderung entworfen.
Eine standardisierte Testumgebung inkl. automatisiert Provisionierung unterstützt den Berater und steigert seine Effektivität.
Typischerweise baut man sich also seine Testumgebung. Gerade bei Softwareherstellern ist das ein umfangreiches unterfangen, da viele Mitarbeiter solch eine Umgebung benötigen, denn es gibt oft folgende Anforderungen:
- Isoliert
- Dediziert
- Einfache Erstellung
- Performance
Use Cases
Softwarehersteller haben zudem das Problem, dass bestimmte Use Cases für Demo Zwecke zur Verwendung kommen sollen. Dadurch ist das Erscheinungsbild nach Außen hin identisch und wirkt professionell.
Die Idee ist nun, ich baue nur einmal eine Umgebung auf Azure, in der aktuellen Version werden folgende VM Typen unterstützt:
- AD
- SQL
- SharePoint 2013
- SharePoint 2016
- SharePoint 2019
- Office Online
- Exchange
- Windows 10
Man sieht also den Umfang solch einer Umgebung und kann sich ausmalen, was allein der Pflegeaufwand dafür betrifft – das hochgerechnet pro Benutzer… Natürlich wird es hier und da trotzdem noch den Fall geben, dass man auch eine Installation etc. testet und es dennoch notwendig ist, eine eigene Umgebung zu installieren oder eben in der o.g. Vorlage auszubauen.
Auf GitHub habe ich das entsprechende PowerShell Modul „VMD“ bereit gestellt. Das kann sowohl die Provisionierung, starten und stoppen übernehmen, einfach per PowerShell oder auch Azure CLI.
Flexibilität
Zwar ist grundsätzlich die Annahme das zumindest das Template in Azure ist (bitte ohne Managed Disks, da später über den Storage Account kopiert wird – das Ziel darf dann auch Managed Disks verwenden), die Flexibilität ist aber da. Man kann also die VMs ebenfalls herunterladen und in Hyper-V importieren. Das Skript erledigt auch das.
Sofern auch die Azure CLI installiert wurde (https://www.hobmaier.net/2018/02/azure-cloud-shell.html), kann man die Umgebung auf aus der Azure App (iOS geht definitiv) starten/stoppen.
Technik
Der Großteil ist PowerShell bzw. eben als Modul psm1. Voraussetzung ist das AzureRM PowerShell Module (in Azure CLI bereits installiert und heißt dort nur Az). Über das Modul wird aber die komplette VM erzeugt inkl. Virtual Network, Storage Accounts, Resource Group, Network Security Group…)
Für die Provisionierung und für den Download wird AzCopy verwendet, daher geht das nur auf Windows und nicht in Azure CLI. Es kopiert im Backend und zeigt am Client lediglich den Status an (Bei Azure zu Azure).
Für Hyper-V wird ebenfalls das lokale Hyper-V Modul am Server verwendet, um die VMs anzulegen, zu starten und stoppen.
Offen
Aktuell sind noch die Disk Namen hart im PowerShell Modul .psm1 hinterlegt. Dies muss man entweder anpassen oder bei Bedarf in das dafür vorgesehene XML Dokument verschieben (ähnlich wie Benutzer / Kennwort).
Sollte man das Skript lokal auf Hyper-V nutzen (und die VMs gerade aus Azure bezogen haben), fehlt beim Start das Pagefile. Das ist zwar grundsätzlich im Skript eingebaut, funktioniert aber fast nie (weil Remote WMI und Firewall/User selten funktionieren), d.h. das bleibt manuelle Arbeit.
Bugs und Features sind ohnehin auf GitHub gepflegt. Über Feedback freue ich mich natürlich sehr. Ansonsten hoffe ich damit weiterhelfen zu können.
Referenz
- GitHub Projekt VMD: https://github.com/hobmaier/vmd
- Installation VMD Azure CLI: https://www.hobmaier.net/2018/02/azure-cloud-shell.html