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

Achtung

Dieser Artikel bezieht sich auf CentOS, eine Linux-Distribution, die sich dem Ende des Lebenszyklus (EOL) status nähert. Bitte berücksichtigen Sie Ihre Nutzung und Ihren Plan entsprechend. Weitere Informationen finden Sie in der Anleitung zum Ende des Lebenszyklus von CentOS.

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 PowerShell für den Zugriff auf Ressourcen in Azure Stack Hub verwenden zu können, 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, müssen Sie das VPN auf Ihrem Remotecomputer installieren.

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, Debian oder CentOS 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
    Centos docker run -it mcr.microsoft.com/azurestack/powershell:centos-7
  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.
    Anmeldeinformationen 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