Verwenden von Docker zum Ausführen von PowerShell für Azure Stack Hub

In diesem Artikel nutzen Sie Docker zum Erstellen eines Containers, in dem die für die Nutzung der verschiedenen Schnittstellen benötigte Version von PowerShell ausgeführt wird. Hier finden Sie Anweisungen zur Verwendung von AzureRM-Modulen und den neuesten Az-Modulen. Für AzureRM ist ein Windows-basierter Container erforderlich. Az verwendet einen Linux-basierten Container.

Docker-Voraussetzungen

Installieren von Docker

  1. Installieren Sie Docker.

  2. Geben Sie in einem Befehlszeilenprogramm, z. B. PowerShell oder Bash, Folgendes ein:

    docker --version
    

Einrichten eines Dienstprinzipals für die Verwendung von PowerShell

Um Mithilfe von PowerShell auf Ressourcen im Azure Stack Hub zuzugreifen, benötigen Sie einen Dienstprinzipal in Ihrem Microsoft Entra-Mandanten. Sie delegieren Berechtigungen mit der rollenbasierten Zugriffskontrolle (RBAC) für Benutzer. Möglicherweise müssen Sie den Dienstprinzipal von Ihrem Cloudoperator anfordern.

  1. Befolgen Sie zum Einrichten Ihres Dienstprinzipals die Anleitung unter Gewähren des Anwendungszugriffs auf Azure Stack Hub-Ressourcen durch Erstellen von Dienstprinzipalen.

  2. Notieren Sie sich die Anwendungs-ID, das Geheimnis, Ihre Mandanten-ID und Ihre Objekt-ID zur späteren Verwendung.

Ausführen von PowerShell in Docker

In diesen Anweisungen führen Sie ein Linux-basiertes Containerimage aus, das die PowerShell und die erforderlichen Module für Azure Stack Hub enthält.

  1. Docker muss in einem Linux-Container ausgeführt werden. Wechseln Sie zu Linux-Containern, wenn Sie Docker ausführen.

  2. Führen Sie Docker von einem Computer aus, der sich in derselben Domäne wie Azure Stack Hub befindet. Wenn Sie das Azure Stack Development Kit (ASDK) verwenden, installieren Sie das VPN auf Ihrem Remotecomputer.

Installieren des Az-Moduls von Azure Stack Hub in einem Linux-Container

  1. Führen Sie in der Befehlszeile den folgenden Docker-Befehl aus, um PowerShell in einem Ubuntu-Container auszuführen:

    docker run -it mcr.microsoft.com/azurestack/powershell
    

    Sie können Ubuntu oder Debian ausführen. Die folgenden Docker-Dateien befinden sich im GitHub-Repository azurestack-powershell. Aktuelle Änderungen an den Docker-Dateien finden Sie im GitHub-Repository. Jedes Betriebssystem ist mit einem Tag versehen. Ersetzen Sie das Tag, also den Abschnitt hinter dem Doppelpunkt, durch das Tag für das gewünschte Betriebssystem.

    Linux Docker-Image
    Ubuntu docker run -it mcr.microsoft.com/azurestack/powershell:ubuntu-18.04
    Debian docker run -it mcr.microsoft.com/azurestack/powershell:debian-9
  2. Die Shell ist bereit für Ihre Cmdlets bereit. Testen Sie Ihre Shellkonnektivität, indem Sie sich anmelden und dann Test-AzureStack.ps1 ausführen.

    Erstellen Sie zuerst die Anmeldeinformationen für den Dienstprinzipal. Sie benötigen das Geheimnis und die Anwendungs-ID. Zudem ist die Objekt-ID erforderlich, wenn Sie Test-AzureStack.ps1 zum Überprüfen des Containers ausführen. Möglicherweise müssen Sie einen Dienstprinzipal von Ihrem Cloudoperator anfordern.

    Geben Sie die folgenden Cmdlets ein, um ein Dienstprinzipalobjekt zu erstellen:

    $passwd = ConvertTo-SecureString <Secret> -AsPlainText -Force
    $pscredential = New-Object System.Management.Automation.PSCredential('<ApplicationID>', $passwd)
    
  3. Stellen Sie eine Verbindung mit Ihrer Umgebung her, indem Sie über Ihre Azure Stack Hub-Instanz das folgende Skript mit den folgenden Werten ausführen.

    Wert Beschreibung
    Der Name der Umgebung. Der Name Ihrer Azure Stack Hub-Umgebung.
    Resource Manager-Endpunkt Die URL für den Resource Manager. Wenden Sie sich an Ihren Cloudoperator, wenn sie Ihnen nicht bekannt ist. Sie sieht ungefähr wie folgt aus: https://management.region.domain.com.
    Verzeichnismandanten-ID Die ID Ihres Azure Stack Hub-Mandantenverzeichnisses.
    Credential Ein Objekt, das Ihren Dienstprinzipal enthält, In diesem Fall $pscredential.
    ./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
    

    PowerShell gibt Ihr Kontoobjekt zurück.

  4. Testen Sie Ihre Umgebung, indem Sie das Skript Test-AzureStack.ps1 im Container ausführen. Geben Sie die Objekt-ID des Dienstprinzipals an. Wenn Sie die Objekt-ID nicht angeben, wird das Skript dennoch ausgeführt. Es werden jedoch nur Mandantenmodule (Benutzermodule) getestet. Für Module, die Administratorrechte erfordern, tritt ein Fehler auf.

    ./Test-AzureStack.ps1 <Object ID>
    

Nächste Schritte