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

# Déploiements

Les déploiements offrent la possibilité de conditionner et de versionner les référentiels de configuration de PowerShell Universal. Ils peuvent être déployés sur un cluster de nœuds PowerShell Universal afin de garantir que tous les nœuds partagent la même configuration, sans avoir besoin de configurer la [synchronisation git](/powershell-universal/fr/config/git.md). Les déploiements sont conditionnés sous forme de modules PowerShell et peuvent être déployés directement depuis des référentiels PowerShell.

{% hint style="warning" %}
Les déploiements ne peuvent pas être utilisés avec la synchronisation git. Lorsque vous utilisez des déploiements, il est recommandé de gérer git et le contrôle de code source en dehors de PowerShell Universal.
{% endhint %}

Les déploiements peuvent également être utilisés comme moyen de capturer rapidement des instantanés des configurations PSU et de revenir en arrière ou d'avancer sans avoir à modifier manuellement les fichiers.

## Création d'un déploiement

Vous devez disposer de l'autorisation `Settings.Deployments\Create` pour créer de nouveaux déploiements.

### API

L'API de gestion et le module PowerShell Universal peuvent être utilisés pour créer des déploiements PowerShell Universal. La cmdlet `New-PSUDeployment` permet de générer un nouveau déploiement. Ce déploiement sera stocké dans la base de données. Il contiendra l'état actuel du référentiel PowerShell Universal de l'ordinateur auquel il est connecté.

Le paramètre `-Path` est facultatif et contiendra le fichier de module `NuPkg`.

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

Vous pouvez également appeler l'API via HTTP.

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

#### Application d'un déploiement en tant que module

Si vous souhaitez que votre module de déploiement apparaisse dans le PSModulePath, vous pouvez ajouter le paramètre de requête `asModule` au chemin. Cela garantit que les fonctions du module de déploiement sont disponibles dans l'environnement.

{% code overflow="wrap" %}

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

{% endcode %}

### Console d'administration

Nous ne recommandons pas de créer des déploiements manuellement, car l'automatisation est préférable, mais cela est possible via la console d'administration.

Cliquez sur ***Paramètres*** \ ***Déploiements*** pour accéder à la page des déploiements. Vous devez disposer de l'autorisation `Settings.Deployments\Read` pour afficher cette page. Cliquez sur ***Créer un déploiement*** pour configurer un nouveau déploiement. Ce déploiement apparaîtra dans le tableau des déploiements.

## Application d'un déploiement

L'application d'un déploiement reconfigure tous les nœuds d'un cluster PowerShell Universal avec le contenu du déploiement sélectionné. Un seul appel API est nécessaire pour reconfigurer l'ensemble du cluster.

Vous devez disposer de l'autorisation `Settings.Deployments\Execute` pour appliquer un déploiement.

### Épinglage

L'épinglage applique un déploiement et garantit que la console d'administration et l'API de gestion sont en lecture seule. Cela empêche les utilisateurs de modifier les ressources dans le cluster.

{% hint style="info" %}
L'épinglage est recommandé pour les clusters PowerShell Universal en production.
{% endhint %}

### API

Vous pouvez utiliser la cmdlet `Select-PSUDeployment` ou l'API de gestion pour appliquer un déploiement. Cela peut être effectué à l'aide d'un référentiel PowerShell ou en sélectionnant un déploiement présent dans la base de données.

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

### Console d'administration

Nous ne recommandons pas de gérer les déploiements via la console d'administration, mais cela est possible. Préférez toujours l'automatisation aux processus de déploiement manuels. Dans la console d'administration, cliquez sur ***Paramètres*** \ ***Déploiements***.

Depuis cette page, vous pouvez voir tous les déploiements créés dans l'environnement PSU. Cliquez sur le bouton ***Appliquer*** pour appliquer le déploiement au cluster. Vous aurez la possibilité d'épingler le déploiement.

### Référentiel PowerShell

Vous pouvez utiliser l'API de gestion et le module Universal pour appliquer un déploiement directement depuis un référentiel PowerShell, comme la PowerShell Gallery ou un partage de fichiers. Le référentiel doit être enregistré sur tous les nœuds du cluster afin d'appliquer le déploiement avec succès. Vous pouvez utiliser `Register-PSResourceRepository` pour enregistrer un référentiel.

Pour appliquer le déploiement, appelez `Select-PSUDeployment` avec le paramètre `Module` défini.

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

### GitHub Actions

Vous pouvez utiliser l'action `ironmansoftware/deploy-universal` pour déployer votre référentiel directement depuis GitHub. Elle extrait le référentiel courant et pousse les modifications vers PowerShell Universal.

Voici un exemple de YAML pour ce faire. Pour en savoir plus sur l'action de déploiement, [cliquez ici](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 déploiements

La synchronisation git et les déploiements offrent des fonctionnalités similaires. Les deux approches garantissent que tous les nœuds d'un cluster partagent une configuration, mais chacune présente ses avantages et ses inconvénients.

### Git

Git permet aux utilisateurs d'effectuer des commits directement dans PowerShell Universal. Ils peuvent consulter l'historique et comparer les modifications sans quitter la console d'administration. Git peut également être complexe et problématique à configurer. PowerShell Universal propose des fonctionnalités git limitées. La synchronisation git a l'avantage de connaître la différence entre la configuration actuelle et la configuration entrante, et peut recharger uniquement les ressources modifiées. Cela dit, cela est souvent complexe et sujet aux erreurs.

#### Avantages

* Configuration partagée dans le cluster
* Interaction git directement dans la console d'administration
* Consultation de l'historique des commits directement dans la console d'administration
* Les mises à jour incrémentielles des ressources limitent les temps d'arrêt

#### Inconvénients

* Nécessite un référentiel git externe pour les clusters
* Peut être complexe à configurer
* Les modifications apportées aux systèmes git externes peuvent empêcher PSU de se synchroniser
* Les mises à jour incrémentielles des ressources sont complexes et sujettes aux erreurs
* La modification directe dans des instances PSU partagées peut être problématique pour les grandes équipes

### Déploiements

Les déploiements fournissent un moyen d'appliquer des packages de déploiement immuables aux clusters PowerShell Universal. Aucun système externe n'est requis, et les packages de déploiement sont simplement des modules PowerShell qui peuvent être stockés dans la base de données ou, facultativement, dans des référentiels de ressources PowerShell externes. Les déploiements ne contiennent aucun historique de fichiers et ne s'intègrent pas avec le contrôle de code source. Les déploiements peuvent être créés dans PowerShell Universal ou en dehors avec des cmdlets PowerShell standard.

#### Avantages

* Simple à créer et à déployer avec des cmdlets PowerShell standard
* Aucun système externe requis
* Configurations immuables, simples à déployer pour PowerShell Universal
* Peut être intégré avec des référentiels de ressources PowerShell pour la gestion des versions

#### Inconvénients

* Le contrôle de code source doit être géré en dehors de PSU
* Des systèmes externes sont nécessaires pour automatiser les déploiements
* La reconfiguration peut prendre du temps, car l'ensemble de la configuration du serveur est réinitialisée


---

# 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:

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

The question should be specific, self-contained, and written in natural language.
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.
