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

# Distribuzioni

Le distribuzioni offrono la possibilità di pacchettizzare e versionare i repository di configurazione di PowerShell Universal. Possono essere distribuite in un cluster di nodi PowerShell Universal per garantire che tutti i nodi abbiano la stessa configurazione senza la necessità di configurare la [sincronizzazione git](/powershell-universal/it/config/git.md). Le distribuzioni sono pacchettizzate come moduli PowerShell e possono essere distribuite direttamente dai repository PowerShell.

{% hint style="warning" %}
Le distribuzioni non possono essere utilizzate con la sincronizzazione git. Quando si utilizzano le distribuzioni, è consigliabile gestire git e il controllo del codice sorgente al di fuori di PowerShell Universal.
{% endhint %}

Le distribuzioni possono essere utilizzate anche per creare rapidamente snapshot delle configurazioni PSU ed eseguire il rollback o il roll forward senza dover modificare manualmente i file.

## Creazione di una distribuzione

È necessaria l'autorizzazione `Settings.Deployments\Create` per creare nuove distribuzioni.

### API

L'API e il modulo di gestione di PowerShell Universal possono essere utilizzati per creare distribuzioni di PowerShell Universal. Il cmdlet `New-PSUDeployment` può essere utilizzato per generare una nuova distribuzione. Questa distribuzione verrà archiviata nel database. Conterrà lo stato corrente del repository di PowerShell Universal per il computer a cui è connesso.

`-Path` è facoltativo e conterrà il file `NuPkg` del modulo.

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

Può anche chiamare l'API di HTTP.

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

#### Applicazione di una distribuzione come modulo

Se desidera che il modulo di distribuzione compaia nel PSModulePath, può aggiungere il parametro della stringa di query `asModule` al percorso. Questo garantisce che le funzioni del modulo di distribuzione siano disponibili nell'ambiente.

{% code overflow="wrap" %}

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

{% endcode %}

### Console di amministrazione

Non consigliamo di creare manualmente le distribuzioni poiché è preferibile l'automazione, ma è possibile farlo tramite la console di amministrazione.

Faccia clic su Impostazioni \ Distribuzioni per accedere alla pagina delle distribuzioni. È necessaria l'autorizzazione `Setings.Deployments\Read` per visualizzare questa pagina. Faccia clic su Crea distribuzione per configurare una nuova distribuzione. Questa distribuzione verrà mostrata nella tabella delle distribuzioni.

## Applicazione di una distribuzione

L'applicazione di una distribuzione riconfigura tutti i nodi di un cluster PowerShell Universal con il contenuto della distribuzione selezionata. È necessaria una sola chiamata API per riconfigurare l'intero cluster.

È necessaria l'autorizzazione `Settings.Deployments\Execute` per applicare una distribuzione.

### Pinning

Il pinning applica una distribuzione e garantisce che la console di amministrazione e l'API di gestione siano di sola lettura. Ciò impedisce agli utenti di modificare le risorse nel cluster.

{% hint style="info" %}
Il pinning è consigliato per i cluster PowerShell Universal di produzione.
{% endhint %}

### API

Può utilizzare il cmdlet `Select-PSUDeployment` o l'API di gestione per applicare una distribuzione. Questa operazione può essere eseguita utilizzando un repository PowerShell o selezionando una distribuzione presente nel database.

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

### Console di amministrazione

Non consigliamo di gestire le distribuzioni tramite la console di amministrazione, ma è possibile. Preferisca sempre l'automazione ai processi di distribuzione manuali. Nella console di amministrazione, faccia clic su Impostazioni \ Distribuzioni.

Da lì, può vedere tutte le distribuzioni elencate che sono state create nell'ambiente PSU. Faccia clic sul pulsante Applica per applicare la distribuzione al cluster. Avrà la possibilità di eseguire il pin della distribuzione.

### Repository PowerShell

Può utilizzare l'API di gestione e il modulo Universal per applicare una distribuzione direttamente da un repository PowerShell, come PowerShell Gallery o una condivisione file. Il repository deve essere registrato su tutti i nodi del cluster per poter applicare correttamente la distribuzione. Può utilizzare `Register-PSResourceRepository` per registrare un repository.

Per applicare la distribuzione, chiami `Select-PSUDeployment` con il parametro `Module` impostato.

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

### GitHub Actions

Può utilizzare l'azione `ironmansoftware/deploy-universal` per distribuire il suo repository direttamente da GitHub. Esegue il checkout del repository corrente e invia le modifiche a PowerShell Universal.

Di seguito è riportato un esempio di YAML per farlo. Per maggiori informazioni sull'azione di distribuzione, [faccia clic qui](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 distribuzioni

La sincronizzazione git e le distribuzioni offrono funzionalità simili. Sia la sincronizzazione git sia le distribuzioni garantiscono che tutti i nodi di un cluster condividano una configurazione, ma ognuna presenta pro e contro diversi.

### Git

Git consente agli utenti di effettuare commit direttamente in PowerShell Universal. Potranno visualizzare la cronologia e confrontare le modifiche senza dover uscire dalla console di amministrazione. Git può anche essere complicato e problematico da configurare. PowerShell Universal offre funzionalità git limitate. La sincronizzazione git ha il vantaggio di conoscere la differenza tra la configurazione corrente e quella in arrivo e può ricaricare solo le risorse che cambiano. Detto questo, spesso è complicato e soggetto a errori.

#### Pro

* Configurazione condivisa nell'intero cluster
* Interazione con git direttamente nella console di amministrazione
* Visualizzazione della cronologia dei commit direttamente nella console di amministrazione
* Gli aggiornamenti incrementali delle risorse limitano i tempi di inattività

#### Contro

* Richiede un repository git esterno per i cluster
* Può essere complicato da configurare
* Le modifiche ai sistemi git esterni possono impedire la sincronizzazione di PSU
* Gli aggiornamenti incrementali delle risorse sono complicati e soggetti a errori
* La modifica diretta in istanze PSU condivise può essere problematica per i team di grandi dimensioni

### Distribuzioni

Le distribuzioni offrono un modo per applicare pacchetti di distribuzione immutabili ai cluster PowerShell Universal. Non sono necessari sistemi esterni e i pacchetti di distribuzione sono semplicemente moduli PowerShell che possono essere archiviati nel database o, facoltativamente, in repository di risorse PowerShell esterni. Le distribuzioni non contengono alcuna cronologia dei file, né si integrano con il controllo del codice sorgente. Le distribuzioni possono essere create in PowerShell Universal o all'esterno con i cmdlet PowerShell standard.

#### Pro

* Semplici da creare e distribuire con i cmdlet PowerShell standard
* Nessun sistema esterno richiesto
* Configurazioni immutabili semplici da distribuire per PowerShell Universal
* Possono essere integrate con i repository di risorse PowerShell per il versionamento

#### Contro

* Il controllo del codice sorgente deve essere gestito al di fuori di PSU
* Sistemi esterni necessari per automatizzare le distribuzioni
* La riconfigurazione può richiedere tempo poiché l'intera configurazione del server viene reimpostata


---

# 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/it/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.
