Azure Cloud Shell

AzureCLI

Als das ist wirklich cool, wer viel mit Azure und der Cloud arbeitet, hat sich ja bestimmt schon eigene PowerShell Skripte oder Module gebaut. Mit der neuen Azure Cloud Shell kann man jetzt sein Skript Repository direkt in der Cloud ausführen.

Für mich ganz besonders spannend, denn ich habe ein Modul zur Verwaltung verschiedenster Testumgebungen und SharePoint PaaS Umgebungen, die weitesgehend auf Azure VMs, Storage und co basieren. Solche Aufgaben laufen von mehreren Minuten bis hin zu Stunden, und wehe wenn ich mal an einem anderen Rechner sitze. Cloud Shell löst das, einfach im Azure Portal anmelden, PowerShell starten und alles wie gewohnt starten.

Installation Azure Cloud Shell

Die Installation erfolgt leicht und ist kostenlos. Es werden lediglich folgende Ressourcen angelegt:

  • Resource Group (am Besten eine Eigene)
  • Storage Account

Los geht’s mit dem Klick auf die Shell:

AzureCLI-InitialSetup
Screenshot: Azure Cloud Shell – Initial Setup

Aus Gewohnheit und Prinzip drücken wir Admins immer auf „Erweitert“, damit kann ich auch sicherstellen, dass ich in der Region meiner Wahl bin:

AzureCLI-InitialSetup-Advanced
Screenshot: Azure Cloud Shell – Initial Setup Advanced

Bitte bei der Eingabe von Storage Account und File Share darauf achten, dass nur Kleinbuchstaben ohne Leerzeichen verwendet werden – sonst kommt es zum Fehler.

Installation AzureRM PowerShell Module

Wer dies vorher per MSI installiert hat, darf jetzt direkt per PowerShell installieren, denn MSI gibt es hier nicht, auch wenn dahinter eine VM steckt:

Installation eigener Module

Wie gesagt habe ich ein eigenes PowerShell Modul, das ich bereitstellen möchte. Grundsätzlich geht das auch mit jedem anderen Skript, denn die Azure Cloud Shell stellt ein SMB Share bereit, auf das ich meine Daten ablegen kann. Das geht auch direkt über Azure – Storage Accounts – <CLI Account > – Files – .pscloudshell\WindowsPowerShell\Module (also fast wie bei Windows lokal) und über Upload hochladen:

AzureCLI-UploadCustomModule
Screenshot: Azure Cloud Shell – Upload Custom Module

Anschließend steht das Modul zur Verfügung:

AzureCLI-CustomModule
Screenshot: Azure Cloud Shell – Custom Module

Update Linux Cloud Shell

Update 30.07.2018: Ich wollte wieder mein Cloud Shell Modul verwenden und musste feststellen, es geht irgendwie nicht. Es stellte sich heraus, dass die Windows Variante eingestellt wurde, und nur noch die Linux Version unterstützt wird (seit Mai 2018).

Um das bisherige PowerShell Modul nutzen zu können, muss man eigentlich nur die Umgebungsvariable anpassen. Denn der Azure Storage wird als als $Home/clouddrive gemounted und alles was darin liegt, wird als IMG gespeichert.

Das geht wie folgt:

Das sieht dann so aus:

CloudShellLinux
Zeigt die Anpassung der Variable $env:PSModulePath in Azure CloudShell Linux

Anschließend funktioniert der Import wieder, einmalig bis zum nächsten Neustart der Konsole.

Damit das dauerhaft funktioniert, muss man noch ein paar mehr Schritte unternehmen und zwar über ein Profil. Dazu muss man im Home Verzeichnis in den Ordern .config wechseln, ein Verzeichnis „PowerShell“ erstellen und mit „vi“ ein Profil „Microsoft.PowerShell_profile.ps1“ erzeugen:

In dem Editor vi muss man „i“ eingeben, um in den Editormodus zu wechseln. Anschließend folgendes Abtippen:

Danach einmal „Esc“ drücken um den Editor zu verlassen und mit „:wq“ (write quit) den Editor verlassen:

AzureShell-Vi
Linux Vi Editor für Azure Shell

Anschließend wird auch beim Neustart der Konsole die Variable entsprechend hinzugefügt.

Weitere Probleme bei Cloud Shell auf Linux

Ein Problem ergibt sich speziell bei PowerShell Modulen, da zumindest bei der Azure PowerShell die Module anders bezeichnet sind, Versionen ebenfalls:

  • Windows = „AzureRM.Profile“; Version 5.3.3
  • Linux = „AzureRM.Profile.Netcore“; Version 0.13.1

Das bedeutet ich muss eine eigene Version für Windows und Linux pflegen oder zumindest im Build Prozess berücksichtigen.

Weitere Probleme, Windows Programme lassen sich damit nicht mehr ausführen. Ich nutze z.B. AzCopy (um große Datenmengen von Storage Account A nach Storage Account B zu kopieren). Bei der Ausführung kommt natürlich ein Fehler:

Program ‚AzCopy.exe‘ failed to run: Exec format errorAt line:1 char:1

Da kenne ich zurzeit keine Alternative, denn mit dem Profile AzureRM.Storage.Netcore geht das leider nicht.

Außerdem sollte im Modul peinlichst genau auf Groß- und Kleinschreibung geachtet werden… Linux nimmt das persönlich, Windows ist es egal.

Aus meiner Sicht leidet dadurch die Portierbarkeit von Skripten. Für einfache Tätigkeiten aber vermutlich irrelevant.

Referenz

Teilen

Autor: Dennis Hobmaier

Dennis Hobmaier ist Solution Designer bei Kapsch BusinessCom AG. Er hat über 15 Jahre Erfahrung in IT-Enterprise Umgebung aller Größenordnungen und bedient Kunden aus den unterschiedlichsten Branchen. Als MCSE SharePoint hat er tiefgreifende Kenntnisse in den Bereichen Microsoft Active Directory, Windows, SharePoint und Office 365. Gerne teilt er seine Projekterfahrung mit Ihnen.

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie mehr darüber, wie Ihre Kommentardaten verarbeitet werden .