> 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

Empaquetez et versionnez les dépôts de configuration PowerShell Universal sous forme de déploiements immuables, puis appliquez-les et épinglez-les à l'ensemble des nœuds d'une grappe.

Les déploiements offrent la possibilité d'empaqueter et de versionner les dépôts de configuration PowerShell Universal. Ils peuvent être déployés vers un cluster de nœuds PowerShell Universal afin de garantir que tous les nœuds ont la même configuration sans avoir à configurer la [synchronisation git](/powershell-universal/fr/config/git.md). Les déploiements sont empaquetés en tant que modules PowerShell et peuvent être déployés directement à partir de dépôts PowerShell.

{% hint style="warning" %}
Les déploiements ne peuvent pas être utilisés avec la synchronisation git. Lors de l'utilisation des déploiements, il est recommandé de gérer git et le contrôle de code source à l'extérieur de PowerShell Universal.
{% endhint %}

Les déploiements peuvent aussi servir à créer rapidement des instantanés des configurations PSU et à revenir en arrière ou en avant sans devoir modifier manuellement des fichiers.

## Création d'un déploiement

Vous aurez besoin de la permission `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. L'applet de commande `New-PSUDeployment` peut être utilisée pour générer un nouveau déploiement. Ce déploiement sera stocké dans la base de données. Il contiendra l'état actuel du dépôt PowerShell Universal pour l'ordinateur auquel il est connecté.

Le `-Path` est facultatif et contiendra le fichier `NuPkg` du module.

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

Vous pouvez aussi appeler l'API de HTTP.

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

#### Appliquer un déploiement en tant que module

Si vous voulez que votre module de déploiement apparaisse dans le PSModulePath, vous pouvez ajouter le paramètre de chaîne 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 manuellement des déploiements, car l'automatisation devrait être privilégiée, mais c'est possible par l'entremise de la console d'administration.

Ouvrez **Source Control > Deployments**. Vous aurez besoin de la permission `Setings.Deployments\Read` pour voir cette page. Cliquez sur Create Deployment pour configurer un nouveau déploiement. Ce déploiement sera affiché 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 d'API est requis pour reconfigurer l'ensemble du cluster.

Vous aurez besoin de la permission `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 l'applet de commande `Select-PSUDeployment` ou l'API de gestion pour appliquer un déploiement. Cela peut être fait à l'aide d'un dépôt PowerShell ou en sélectionnant un déploiement qui se trouve 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 à partir de la console d'administration, mais c'est possible. Privilégiez toujours l'automatisation plutôt que les processus de déploiement manuels. Dans la console d'administration, ouvrez **Source Control > Deployments**.

À partir de là, vous pouvez voir tous les déploiements listés qui ont été créés dans l'environnement PSU. Cliquez sur le bouton Appliquer pour appliquer le déploiement au cluster. Vous aurez l'option d'épingler le déploiement.

### Dépôt PowerShell

Vous pouvez utiliser l'API de gestion et le module Universal pour appliquer un déploiement directement à partir d'un dépôt PowerShell, comme le PowerShell Gallery ou un partage de fichiers. Le dépôt 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 dépôt.

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 dépôt directement à partir de GitHub. Elle extrait le dépôt actuel et pousse les changements vers PowerShell Universal.

Voici un exemple du YAML pour le 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 une fonctionnalité similaire. La synchronisation git et les déploiements garantissent tous deux que tous les nœuds d'un cluster partagent une configuration, mais chacun a ses avantages et ses inconvénients.

### Git

Git permet aux utilisateurs de faire des commits directement dans PowerShell Universal. Ils pourront consulter l'historique et comparer les changements sans avoir à quitter la console d'administration. Git peut aussi être compliqué et problématique à configurer. PowerShell Universal offre 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 seulement les ressources qui changent. Cela dit, c'est souvent compliqué et sujet aux erreurs.

#### Avantages

* Configuration partagée dans l'ensemble du cluster
* Interaction git directement dans la console d'administration
* Consulter 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 dépôt git externe pour les clusters
* Peut être compliqué à configurer
* Les changements apportés aux systèmes git externes peuvent empêcher PSU de se synchroniser
* Les mises à jour incrémentielles des ressources sont compliquées 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 offrent un moyen d'appliquer des paquets de déploiement immuables aux clusters PowerShell Universal. Aucun système externe n'est requis, et les paquets de déploiement sont simplement des modules PowerShell qui peuvent être stockés dans la base de données ou, optionnellement, dans des dépôts de ressources PowerShell externes. Les déploiements ne contiennent aucun historique de fichiers et ne s'intègrent pas au contrôle de code source. Les déploiements peuvent être créés dans PowerShell Universal ou à l'extérieur avec des applets de commande PowerShell standards.

#### Avantages

* Simples à créer et à déployer avec des applets de commande PowerShell standards
* Aucun système externe requis
* Configurations immuables qui sont simples à déployer pour PowerShell Universal
* Peuvent être intégrés aux dépôts de ressources PowerShell pour la gestion des versions

#### Inconvénients

* Le contrôle de code source doit être réalisé à l'extérieur de PSU
* Systèmes externes requis pour automatiser les déploiements
* La reconfiguration peut prendre du temps puisque toute 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, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/powershell-universal/fr/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.
