Azure
PowerShell Universal ist eine ASP.NET Core-Webanwendung und kann in Windows Azure Web Apps gehostet werden.
Container-Web-App
Container-Web-Apps ermöglichen die Verwendung von Docker-Images als Web-Apps in Azure. Im Azure-Portal können Sie eine Docker-Container-Web-App mit dem Assistenten App Services \ Create Web App erstellen.
Sobald Sie eine Ressourcengruppe ausgewählt, einen Namen zugewiesen und einen Compute-Plan gewählt haben, können Sie die Web-App erstellen.

Als Nächstes müssen Sie das Image in Ihrer Web-App bereitstellen. Wählen Sie dazu das Deployment Center und konfigurieren Sie das abzurufende Image. Sie können entweder eine statische getaggte Version (wie 2.7.3) abrufen oder die neueste Version, sodass Ihre Web-App automatisch mit neuen PowerShell Universal-Releases aktuell bleibt. Verwenden Sie das Tag mit dem Suffix azure. Es ist für die Ausführung in Azure vorkonfiguriert.

Lokale Persistenz
Standardmäßig schreibt der Container in das Verzeichnis /home.
Sie müssen sicherstellen, dass die Umgebungsvariable WEBSITES_ENABLE_APP_SERVICE_STORAGE auf true gesetzt ist. Damit wird der Container so konfiguriert, dass der Ordner /home persistent ist, und dort werden die Konfigurationsdaten für PowerShell Universal gespeichert.
Git und SQL
Wenn Sie die Git-Integration in PowerShell Universal verwenden möchten, empfehlen wir, einen SQL-Server und eine Datenbank für die Speicherung einzurichten. Git wird verwendet, um Konfigurationsdateien beim Start des Containers zu synchronisieren. SQL speichert die Git-Konfigurationseinstellungen neben Ressourcen wie Jobs, App-Tokens und Identitäten.
Für den Anfang benötigen Sie eine Azure SQL-Datenbank. Nachdem Sie die Ressource erstellt haben, müssen Sie die Verbindungszeichenfolge aus der Datenbank kopieren, um sie PowerShell Universal bereitzustellen.

Stellen Sie sicher, dass Sie Azure-Diensten den Zugriff auf die Datenbank erlaubt haben.

Um die SQL-Unterstützung zu aktivieren, sollten Sie die Plugins innerhalb von PowerShell Universal so einstellen, dass das SQL-Plugin in der Anwendungskonfiguration Ihrer Web-App verwendet wird.
Erstellen Sie eine Einstellung Plugins__0 mit dem Wert SQL. Setzen Sie anschließend den Wert Data__ConnectionString auf Ihre SQL-Server-Datenbank.

Sobald Sie SQL konfiguriert haben, können Sie Ihren Container starten. Das Datenbankschema wird beim Start des Containers erstellt. Als Nächstes müssen Sie Git innerhalb von PowerShell Universal konfigurieren, indem Sie auf Settings \ Git klicken. Geben Sie Ihr Remote, den Branch, Benutzernamen, Passwort oder ein persönliches Zugriffstoken sowie den Synchronisierungsmodus ein. Push-only wird in dieser Konfiguration nicht empfohlen, da der Containerzustand zwischen Neustarts verloren geht. Stellen Sie sicher, dass der Initialisierungsmodus auf Clone gesetzt ist.

Weitergeleitete Header
Container werden typischerweise hinter einem Reverse Proxy gehostet und kennen die tatsächliche externe URL ohne zusätzliche Konfiguration nicht. Um sicherzustellen, dass Systeme, die die externe URL benötigen, wie OpenID Connect, die richtigen Informationen erhalten, müssen Sie die Umgebungsvariable ASPNETCORE_FORWARDEDHEADERS_ENABLED auf true setzen.

Weitere Informationen finden Sie in diesem Blogbeitrag von Microsoft.
Bicep
Sie können die folgende Bicep-Vorlage verwenden, um eine Container-Web-App mit persistentem Speicher bereitzustellen.
Container-Sidecars
Container-Web-Apps unterstützen außerdem Sidecar-Container, mit denen Sie zusätzliche Container neben dem PowerShell Universal-Container ausführen können. Dies ist nützlich zur Unterstützung von Diensten wie Proxys, Agents, Collectors oder anderen Begleitprozessen. Wenn Sie PowerShell Universal in dieser Konfiguration hosten, stellen Sie sicher, dass der Web-Container den richtigen HTTP-Port bereitstellt. Standardmäßig lauscht PowerShell Universal auf Port 5000.
Standard-Web-App
Manuelles Erstellen einer Web-App
Im Azure-Portal müssen Sie eine neue Web App-Ressource erstellen. PowerShell Universal benötigt derzeit den .NET 10-Runtime-Stack. Sie können entweder Linux oder Windows verwenden.

Startbefehl (nur Linux)
Beim Hosten in einer Linux-Umgebung müssen Sie den Startbefehl unter Settings \ Configuration \ General Settings \ Startup Command auf Folgendes setzen.
Im folgenden Beispiel verwenden wir das Azure PowerShell-Modul, um die Web-App manuell bereitzustellen.
Zunächst müssen Sie Azure PowerShell installieren.
Nach der Installation müssen Sie sich mit Ihrem Abonnement verbinden.
Windows-Dateien bereitstellen
Wenn Sie Windows verwenden, müssen Sie die Windows-ZIP-Datei herunterladen. Damit wird die neueste Version von PowerShell Universal heruntergeladen.
Linux-Dateien bereitstellen
Wenn Sie Linux verwenden, müssen Sie die Linux-ZIP-Datei herunterladen. Damit wird die neueste Version von PowerShell Universal heruntergeladen.
Nachdem wir nun das Az-Modul konfiguriert und die Universal-ZIP heruntergeladen haben, können wir die Web-App bereitstellen.
Erforderliche Einstellungsanpassungen
Diese Einstellungen können auf der Registerkarte Configuration innerhalb der Application settings festgelegt werden.

JWT-Signaturschlüssel
Der Standard-JWT-Signaturschlüssel hat keine ausreichende Länge und muss aktualisiert werden. Dies kann in appsettings.json oder mithilfe von Umgebungsvariablen erfolgen.
appsettings.json
Umgebungsvariable
API-URL
Azure Web Apps verwenden einen Reverse Proxy und PowerShell Universal erkennt die externe URL nicht korrekt. Beim Ausführen von Jobs verwendet Universal die Management-API, um automatisch Job-, Skript- und Zeitplaninformationen nachzuschlagen. Das bedeutet, dass dies fehlschlägt, wenn die externe API-URL nicht korrekt adressiert werden kann.
Die API-URL sollte die externe HTTP-Adresse Ihrer Web-App sein. Sie können dies in appsettings.json oder mithilfe einer Umgebungsvariable aktualisieren.
appsettings.json
Umgebungsvariable
NodeName
Sie können den Namen der PowerShell Universal-Instanz festlegen, indem Sie NodeName angeben. Dadurch wird sichergestellt, dass Neustarts die PowerShell Universal-Datenbank nicht beeinträchtigen. Dies ist für LiteDB-Installationen nicht erforderlich.
PORT und WEBSITES_PORT (nur Linux)
Um den Standardport in einer Linux-Web-App zu überschreiben, müssen Sie die Einstellungen PORT und WEBSITES_PORT auf 5000 setzen.
Nach der Veröffentlichung der Web-App können Sie Ihre PowerShell Universal-Instanz aufrufen, indem Sie zur URL der Web-App navigieren.
Persistenter Speicher
Die Standarddatei appsettings.json speichert die Datenbank- und Konfigurationsdateien an einem nicht persistenten Ort. Sie können Umgebungsvariablen hinzufügen, um sie in den persistenten Speicher Ihrer Web-App zu verschieben.
Data__RepositoryPath
Die Umgebungsvariable Data__RepositoryPath legt den Speicherort der Konfigurationsdateien für Universal fest. Setzen Sie den Wert auf Folgendes.
Aktualisieren Ihrer Web-App
Wenn eine neue Version von PowerShell Universal veröffentlicht wird, müssen Sie die Anwendungsdateien für Ihre Web-App aktualisieren. Wir empfehlen, das Anwendungsverzeichnis zu entfernen und die Dateien neu bereitzustellen. Die Datenbank- und Konfigurationsdateien werden nicht im Anwendungsverzeichnis gespeichert.
Sie können die Dateien für Ihre Web-App mithilfe der Kudu-Befehls-API löschen. Ihre Kudu-Anmeldeinformationen verwenden Basic-Authentifizierung und sind dieselben wie Ihre Bereitstellungsanmeldeinformationen.
Um alle Dateien in Ihrer Web-App zu löschen, führen Sie den folgenden Befehl aus.
Nachdem Sie die Anwendungsdateien gelöscht haben, können Sie sie erneut bereitstellen, indem Sie die Schritte zur manuellen Erstellung erneut ausführen.
Application Gateway
Sie können PowerShell Universal so konfurieren, dass es hinter einem Application Gateway innerhalb von Azure ausgeführt wird. Dies ist hilfreich, um Lastenausgleich und Hochverfügbarkeit für mehrere PowerShell Universal-Instanzen bereitzustellen.
Konfigurieren Sie zunächst einen Backend-Pool, der auf eine oder mehrere Azure Web Apps mit PowerShell Universal verweist.

Für die Backend-Einstellungen sollten Sie sicherstellen, dass Sie HTTPS mit einem Zertifikat einer bekannten Zertifizierungsstelle verwenden. Cookie-basierte Affinität ist erforderlich, um sicherzustellen, dass Sitzungen an einen einzelnen Knoten gebunden sind.

Damit Azure die richtige Web-App bereitstellen kann, müssen Sie sicherstellen, dass die Einstellung Override with new host name konfiguriert ist. Verwenden Sie den Hostnamen für das Backend-Ziel.

Stellen Sie sicher, dass die Backend-Pool-Regel als Ziel und nicht als Weiterleitung konfiguriert ist.

Konfigurieren Sie eine Header-Rewrite-Regel, um den öffentlich zugänglichen Hostnamen als Header X-Forwarded-Host weiterzugeben. PowerShell Universal verwendet diesen, um intern URLs zu erstellen.

Die obige Rewrite-Regel ist eine Voraussetzung für die Authentifizierungsmethoden OpenID Connect und SAML2.
Schließlich können Sie die öffentliche IP-Adresse Ihres Application Gateways über einen DNS-Anbieter mit einem benutzerdefinierten Hostnamen konfigurieren. Erstellen Sie einen A-Eintrag in Ihrer DNS-Verwaltung.

Zuletzt aktualisiert
War das hilfreich?