> 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/da/config/deployments.md).

# Udrulninger

Pak og versionér PowerShell Universal-konfigurationslagre som uforanderlige udrulninger, og anvend og fastgør dem derefter på tværs af en klynge af noder.

Udrulninger giver mulighed for at pakke og versionere konfigurationslagre til PowerShell Universal. Udrulningerne kan udrulles til en klynge af PowerShell Universal-noder for at sikre, at alle noder har den samme konfiguration, uden at det er nødvendigt at konfigurere [git-synkronisering](/powershell-universal/da/config/git.md). Udrulninger pakkes som PowerShell-moduler og kan udrulles direkte fra PowerShell-lagre.

{% hint style="warning" %}
Udrulninger kan ikke bruges sammen med git-synkronisering. Når der bruges udrulninger, anbefales det at administrere git og kildekontrol uden for PowerShell Universal.
{% endhint %}

Udrulninger kan også bruges som en måde hurtigt at tage et snapshot af PSU-konfigurationer på og rulle tilbage eller frem uden at skulle ændre filer manuelt.

## Oprettelse af en udrulning

De skal have tilladelsen `Settings.Deployments\Create` for at oprette nye udrulninger.

### API

PowerShell Universals administrations-API og modul kan bruges til at oprette PowerShell Universal-udrulninger. Cmdlet'en `New-PSUDeployment` kan bruges til at generere en ny udrulning. Denne udrulning gemmes i databasen. Den indeholder den aktuelle tilstand af PowerShell Universal-lageret for den computer, den er forbundet til.

Parameteren `-Path` er valgfri og vil indeholde modulets `NuPkg`-fil.

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

De kan også kalde API'en via HTTP.

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

#### Anvendelse af en udrulning som modul

Hvis De vil have, at Deres udrulningsmodul vises på PSModulePath, kan De føje query-strengparameteren `asModule` til stien. Det sikrer, at funktionerne i udrulningsmodulet er tilgængelige i miljøet.

{% code overflow="wrap" %}

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

{% endcode %}

### Admin Console

Vi anbefaler ikke at oprette udrulninger manuelt, da automatisering bør foretrækkes, men det er muligt via admin console.

Åbn **Source Control > Deployments**. De skal have tilladelsen `Setings.Deployments\Read` for at se denne side. Klik på Create Deployment for at konfigurere en ny udrulning. Denne udrulning vises i udrulningstabellen.

## Anvendelse af en udrulning

Anvendelse af en udrulning omkonfigurerer alle noder i en PowerShell Universal-klynge med indholdet af den valgte udrulning. Der kræves kun ét API-kald for at omkonfigurere hele klyngen.

De skal have tilladelsen `Settings.Deployments\Execute` for at anvende en udrulning.

### Fastgørelse

Fastgørelse bruger en udrulning og sikrer, at admin console og Management API er skrivebeskyttede. Dette forhindrer brugere i at redigere ressourcer i klyngen.

{% hint style="info" %}
Fastgørelse anbefales til PowerShell Universal-klynger i produktion.
{% endhint %}

### API

De kan bruge cmdlet'en `Select-PSUDeployment` eller administrations-API'en til at anvende en udrulning. Dette kan gøres ved hjælp af et PowerShell-lager eller ved at vælge en udrulning, der findes i databasen.

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

### Admin Console

Vi anbefaler ikke at administrere udrulninger via admin console, men det er muligt. Foretræk altid automatisering frem for manuelle udrulningsprocesser. I admin console skal De åbne **Source Control > Deployments**.

Derfra kan De se alle de udrulninger, der er oprettet i PSU-miljøet. Klik på knappen Apply for at anvende udrulningen på klyngen. De får mulighed for at fastgøre udrulningen.

### PowerShell-lager

De kan bruge administrations-API'en og Universal-modulet til at anvende en udrulning direkte fra et PowerShell-lager, f.eks. PowerShell Gallery eller en fildeling. Lageret skal være registreret på alle noder i klyngen, for at udrulningen kan anvendes korrekt. De kan bruge `Register-PSResourceRepository` til at registrere et lager.

For at anvende udrulningen skal De kalde `Select-PSUDeployment` med parameteren `Module` angivet.

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

### GitHub Actions

De kan bruge handlingen `ironmansoftware/deploy-universal` til at udrulle Deres lager direkte fra GitHub. Den tjekker det aktuelle lager ud og sender ændringerne op til PowerShell Universal.

Nedenfor er et eksempel på den YAML, der skal bruges til det. Få mere at vide om udrulningshandlingen, [klik her](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 udrulninger

Git-synkronisering og udrulninger tilbyder lignende funktionalitet. Både git-synkronisering og udrulninger sikrer, at alle noder i en klynge deler en konfiguration, men hver især har forskellige fordele og ulemper.

### Git

Git giver brugere mulighed for at foretage commits direkte i PowerShell Universal. Brugerne kan se historikken og sammenligne ændringer uden at skulle forlade admin console. Git kan også være kompliceret og problematisk at konfigurere. PowerShell Universal tilbyder begrænsede git-funktioner. Git-synkronisering har den fordel, at den kender forskellen mellem den aktuelle konfiguration og den indkommende konfiguration og kun kan genindlæse de ressourcer, der ændres. Når det er sagt, er dette ofte kompliceret og fejlbehæftet.

#### Fordele

* Delt konfiguration på tværs af klyngen
* Git-interaktion direkte i admin console
* Vis commit-historik direkte i admin console
* Inkrementelle ressourceopdateringer begrænser nedetiden

#### Ulemper

* Kræver et eksternt git-lager til klynger
* Kan være kompliceret at konfigurere
* Ændringer i eksterne git-systemer kan forhindre PSU i at synkronisere
* Inkrementelle ressourceopdateringer er komplicerede og fejlbehæftede
* Redigering direkte i delte PSU-instanser kan være problematisk for store teams

### Udrulninger

Udrulninger giver en måde at anvende uforanderlige udrulningspakker på PowerShell Universal-klynger. Eksterne systemer er ikke påkrævet, og udrulningspakker er blot PowerShell-moduler, der kan gemmes i databasen eller, valgfrit, i eksterne PowerShell-ressourcelagre. Udrulninger indeholder ingen filhistorik og integrerer heller ikke med versionsstyring. Udrulninger kan oprettes i PowerShell Universal eller uden for med standard-PowerShell-cmdletter.

#### Fordele

* Enkelt at oprette og udrulle med standard-PowerShell-cmdlets
* Ingen eksterne systemer påkrævet
* Uforanderlige konfigurationer, der er enkle for PowerShell Universal at udrulle
* Kan integreres med PowerShell Resource Repositories til versionsstyring

#### Ulemper

* Kildekontrol skal udføres uden for PSU
* Eksterne systemer, der kræves for at automatisere udrulninger
* Omkonfiguration kan tage tid, da hele serverkonfigurationen nulstilles


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
