> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/powershell-universal/de/config/deployments.md).

# Bereitstellungen

Deployments bieten die Möglichkeit, PowerShell Universal-Konfigurationsrepositorys zu verpacken und zu versionieren. Sie können auf einem Cluster von PowerShell Universal-Knoten bereitgestellt werden, um sicherzustellen, dass alle Knoten dieselbe Konfiguration haben, ohne dass [Git-Sync](/powershell-universal/de/config/git.md) konfiguriert werden muss. Deployments werden als PowerShell-Module verpackt und können direkt aus PowerShell-Repositorys bereitgestellt werden.

{% hint style="warning" %}
Deployments können nicht mit Git-Sync verwendet werden. Bei der Verwendung von Deployments wird empfohlen, Git und die Quellcodeverwaltung außerhalb von PowerShell Universal zu verwalten.
{% endhint %}

Deployments können auch verwendet werden, um schnell Snapshots von PSU-Konfigurationen zu erstellen und ohne manuelles Ändern von Dateien zurück- oder vorwärtszurollen.

## Ein Deployment erstellen

Sie benötigen die Berechtigung `Settings.Deployments\Create`, um neue Deployments zu erstellen.

### API

Die PowerShell Universal Management API und das Modul können zum Erstellen von PowerShell Universal-Deployments verwendet werden. Das Cmdlet `New-PSUDeployment` kann verwendet werden, um ein neues Deployment zu erzeugen. Dieses Deployment wird in der Datenbank gespeichert. Es enthält den aktuellen Zustand des PowerShell Universal-Repositorys für den Computer, mit dem es verbunden ist.

Der Parameter `-Path` ist optional und enthält die `NuPkg`-Datei des Moduls.

```powershell
New-PSUDeployment -Name 'Production' -Version '1.0.1' -Path .\production.1.0.1.nupkg
```

Sie können die API auch über HTTP aufrufen.

```powershell
Invoke-RestMethod http://localhost:5000/api/v1/deployments -Method POST -Body (@{
   Name = 'Production'
   Version = '1.0.1'
} | ConvertTo-Json)
```

#### Ein Deployment als Modul anwenden

Wenn Ihr Deployment-Modul im PSModulePath erscheinen soll, können Sie den Abfragezeichenfolgenparameter `asModule` an den Pfad anhängen. Dies stellt sicher, dass die Funktionen im Deployment-Modul in der Umgebung verfügbar sind.

{% code overflow="wrap" %}

```powershell
Invoke-RestMethod http://localhost:5000/api/v1/deployments?asModule=true -Method POST -InFile mymodule.nupkg
```

{% endcode %}

### Admin-Konsole

Wir empfehlen nicht, Deployments manuell zu erstellen, da Automatisierung bevorzugt werden sollte, aber es ist über die Admin-Konsole möglich.

Klicken Sie auf Einstellungen \ Deployments, um auf die Deployments-Seite zuzugreifen. Sie benötigen die Berechtigung `Setings.Deployments\Read`, um diese Seite anzuzeigen. Klicken Sie auf Deployment erstellen, um ein neues Deployment zu konfigurieren. Dieses Deployment wird in der Deployments-Tabelle angezeigt.

## Ein Deployment anwenden

Das Anwenden eines Deployments konfiguriert alle Knoten in einem PowerShell Universal-Cluster mit dem Inhalt des ausgewählten Deployments neu. Es ist nur ein einziger API-Aufruf erforderlich, um den gesamten Cluster neu zu konfigurieren.

Sie benötigen die Berechtigung `Settings.Deployments\Execute`, um ein Deployment anzuwenden.

### Fixieren

Das Fixieren wendet ein Deployment an und stellt sicher, dass die Admin-Konsole und die Management API schreibgeschützt sind. Dies verhindert, dass Benutzer Ressourcen im Cluster bearbeiten.

{% hint style="info" %}
Fixieren wird für Produktions-Cluster von PowerShell Universal empfohlen.
{% endhint %}

### API

Sie können das Cmdlet `Select-PSUDeployment` oder die Management API verwenden, um ein Deployment anzuwenden. Dies kann über ein PowerShell-Repository oder durch Auswahl eines Deployments erfolgen, das sich in der Datenbank befindet.

<pre class="language-powershell"><code class="lang-powershell"><strong>Get-PSUDeployment -Name 'Production' -Version '1.0.1' -Pin | Select-PSUDeployment 
</strong></code></pre>

### Admin-Konsole

Wir empfehlen nicht, Deployments über die Admin-Konsole zu verwalten, aber es ist möglich. Bevorzugen Sie immer Automatisierung gegenüber manuellen Deployment-Prozessen. Klicken Sie in der Admin-Konsole auf Einstellungen \ Deployments.

Von dort aus können Sie alle Deployments sehen, die in der PSU-Umgebung erstellt wurden. Klicken Sie auf die Schaltfläche Anwenden, um das Deployment auf den Cluster anzuwenden. Sie haben die Möglichkeit, das Deployment zu fixieren.

### PowerShell-Repository

Sie können die Management API und das Universal-Modul verwenden, um ein Deployment direkt aus einem PowerShell-Repository anzuwenden, wie zum Beispiel der PowerShell Gallery oder einer Dateifreigabe. Das Repository muss auf allen Knoten im Cluster registriert sein, damit das Deployment erfolgreich angewendet werden kann. Sie können `Register-PSResourceRepository` verwenden, um ein Repository zu registrieren.

Um das Deployment anzuwenden, rufen Sie `Select-PSUDeployment` mit gesetztem Parameter `Module` auf.

```powershell
Select-PSUDeployment -ModuleName 'Production' -ModuleVersion '1.0.1'
```

### GitHub Actions

Sie können die Action `ironmansoftware/deploy-universal` verwenden, um Ihr Repository direkt von GitHub aus bereitzustellen. Sie checkt das aktuelle Repository aus und überträgt die Änderungen an PowerShell Universal.

Nachfolgend finden Sie ein Beispiel für das YAML, um dies zu tun. Um mehr über die Deploy-Action zu erfahren, [klicken Sie hier](https://github.com/ironmansoftware/deploy-universal).

```yaml
name: Deploy
on: [workflow_dispatch]

jobs:
    build:
      name: Deploy
      runs-on: ubuntu-latest
      steps:
        - uses: actions/checkout@v1
        - uses: ironmansoftware/deploy-universal@1.0
          with:
            url: 'https://431d-2600-6c44-1a7f-f1f9-30aa-ed10-8683-5259.ngrok-free.app'
            apptoken: '${{ secrets.UNIVERSAL_APP_TOKEN }}'
            name: 'Production'
            version: '1.4.1'
            description: 'Production Configuration'
```

## Git vs. Deployments

Git-Sync und Deployments bieten ähnliche Funktionalität. Sowohl Git-Sync als auch Deployments stellen sicher, dass alle Knoten innerhalb eines Clusters eine Konfiguration teilen, aber beide haben unterschiedliche Vor- und Nachteile.

### Git

Git ermöglicht Benutzern, Commits direkt in PowerShell Universal zu erstellen. Sie können den Verlauf anzeigen und Änderungen vergleichen, ohne die Admin-Konsole verlassen zu müssen. Git kann außerdem kompliziert und problematisch zu konfigurieren sein. PowerShell Universal bietet begrenzte Git-Funktionen. Git-Sync hat den Vorteil, den Unterschied zwischen der aktuellen Konfiguration und der eingehenden Konfiguration zu kennen und kann nur die Ressourcen neu laden, die sich ändern. Allerdings ist dies oft kompliziert und fehleranfällig.

#### Vorteile

* Gemeinsame Konfiguration über den Cluster hinweg
* Git-Interaktion direkt in der Admin-Konsole
* Commit-Verlauf direkt in der Admin-Konsole anzeigen
* Inkrementelle Ressourcenaktualisierungen begrenzen Ausfallzeiten

#### Nachteile

* Erfordert ein externes Git-Repository für Cluster
* Kann kompliziert zu konfigurieren sein
* Änderungen an externen Git-Systemen können PSU an der Synchronisierung hindern
* Inkrementelle Ressourcenaktualisierungen sind kompliziert und fehleranfällig
* Das direkte Bearbeiten in gemeinsam genutzten PSU-Instanzen kann für große Teams problematisch sein

### Deployments

Deployments bieten eine Möglichkeit, unveränderliche Deployment-Pakete auf PowerShell Universal-Cluster anzuwenden. Externe Systeme sind nicht erforderlich, und Deployment-Pakete sind lediglich PowerShell-Module, die in der Datenbank oder optional in externen PowerShell-Ressourcenrepositorys gespeichert werden können. Deployments enthalten keinen Dateiverlauf und lassen sich auch nicht in die Quellcodeverwaltung integrieren. Deployments können in PowerShell Universal oder außerhalb mit Standard-PowerShell-Cmdlets erstellt werden.

#### Vorteile

* Einfach zu erstellen und mit Standard-PowerShell-Cmdlets bereitzustellen
* Keine externen Systeme erforderlich
* Unveränderliche Konfigurationen, die für PowerShell Universal einfach bereitzustellen sind
* Kann für die Versionierung mit PowerShell-Ressourcenrepositorys integriert werden

#### Nachteile

* Die Quellcodeverwaltung muss außerhalb von PSU erfolgen
* Externe Systeme sind erforderlich, um Deployments zu automatisieren
* Die Neukonfiguration kann einige Zeit dauern, da die gesamte Serverkonfiguration zurückgesetzt wird


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/powershell-universal/de/config/deployments.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
