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

# Implementaciones

Los despliegues ofrecen la capacidad de empaquetar y versionar repositorios de configuración de PowerShell Universal. Pueden desplegarse en un clúster de nodos de PowerShell Universal para garantizar que todos los nodos tengan la misma configuración sin necesidad de configurar la [sincronización con git](/powershell-universal/es/config/git.md). Los despliegues se empaquetan como módulos de PowerShell y pueden desplegarse directamente desde repositorios de PowerShell.

{% hint style="warning" %}
Los despliegues no pueden utilizarse con la sincronización con git. Al utilizar despliegues, se recomienda gestionar git y el control de código fuente fuera de PowerShell Universal.
{% endhint %}

Los despliegues también pueden utilizarse como una forma de capturar rápidamente instantáneas de configuraciones de PSU y retroceder o avanzar sin tener que cambiar ficheros manualmente.

## Crear un despliegue

Necesitará el permiso `Settings.Deployments\Create` para crear nuevos despliegues.

### API

La API de gestión y el módulo de PowerShell Universal pueden utilizarse para crear despliegues de PowerShell Universal. El cmdlet `New-PSUDeployment` puede utilizarse para generar un nuevo despliegue. Este despliegue se almacenará en la base de datos. Contendrá el estado actual del repositorio de PowerShell Universal del ordenador al que está conectado.

El parámetro `-Path` es opcional y contendrá el fichero `NuPkg` del módulo.

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

También puede llamar a la API mediante HTTP.

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

#### Aplicar un despliegue como módulo

Si desea que su módulo de despliegue aparezca en PSModulePath, puede añadir el parámetro de cadena de consulta `asModule` a la ruta. Esto garantiza que las funciones del módulo de despliegue estén disponibles en el entorno.

{% code overflow="wrap" %}

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

{% endcode %}

### Consola de administración

No recomendamos crear despliegues manualmente, ya que debe preferirse la automatización, pero es posible hacerlo a través de la consola de administración.

Haga clic en Configuración \ Despliegues para acceder a la página de despliegues. Necesitará el permiso `Setings.Deployments\Read` para ver esta página. Haga clic en Crear despliegue para configurar un nuevo despliegue. Este despliegue se mostrará en la tabla de despliegues.

## Aplicar un despliegue

Aplicar un despliegue reconfigura todos los nodos de un clúster de PowerShell Universal con el contenido del despliegue seleccionado. Solo se requiere una única llamada a la API para reconfigurar todo el clúster.

Necesitará el permiso `Settings.Deployments\Execute` para aplicar un despliegue.

### Fijación

La fijación aplica un despliegue y garantiza que la consola de administración y la API de gestión sean de solo lectura. Esto evita que los usuarios editen recursos en el clúster.

{% hint style="info" %}
Se recomienda la fijación para clústeres de PowerShell Universal en producción.
{% endhint %}

### API

Puede utilizar el cmdlet `Select-PSUDeployment` o la API de gestión para aplicar un despliegue. Esto puede hacerse utilizando un repositorio de PowerShell o seleccionando un despliegue que se encuentre en la base de datos.

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

### Consola de administración

No recomendamos gestionar los despliegues a través de la consola de administración, pero es posible. Prefiera siempre la automatización frente a los procesos de despliegue manuales. En la consola de administración, haga clic en Configuración \ Despliegues.

Desde allí, puede ver todos los despliegues listados que se han creado en el entorno de PSU. Haga clic en el botón Aplicar para aplicar el despliegue al clúster. Tendrá la opción de fijar el despliegue.

### Repositorio de PowerShell

Puede utilizar la API de gestión y el módulo Universal para aplicar un despliegue directamente desde un repositorio de PowerShell, como PowerShell Gallery o un recurso compartido de ficheros. El repositorio debe estar registrado en todos los nodos del clúster para aplicar el despliegue correctamente. Puede utilizar `Register-PSResourceRepository` para registrar un repositorio.

Para aplicar el despliegue, llame a `Select-PSUDeployment` con el parámetro `Module` establecido.

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

### GitHub Actions

Puede utilizar la acción `ironmansoftware/deploy-universal` para desplegar su repositorio directamente desde GitHub. Extrae el repositorio actual y envía los cambios a PowerShell Universal.

A continuación se muestra un ejemplo del YAML para hacerlo. Para obtener más información sobre la acción de despliegue, [haga clic aquí](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 frente a despliegues

La sincronización con git y los despliegues ofrecen funcionalidades similares. Tanto la sincronización con git como los despliegues garantizan que todos los nodos de un clúster compartan una configuración, pero cada uno tiene distintas ventajas e inconvenientes.

### Git

Git permite a los usuarios realizar commits directamente en PowerShell Universal. Podrán ver el historial y comparar cambios sin tener que salir de la consola de administración. Git también puede resultar complicado y problemático de configurar. PowerShell Universal ofrece funciones de git limitadas. La sincronización con git tiene la ventaja de conocer la diferencia entre la configuración actual y la configuración entrante, y puede recargar solo los recursos que cambian. Dicho esto, esto a menudo resulta complicado y propenso a errores.

#### Ventajas

* Configuración compartida en todo el clúster
* Interacción con git directamente en la consola de administración
* Ver el historial de commits directamente en la consola de administración
* Las actualizaciones incrementales de recursos limitan el tiempo de inactividad

#### Inconvenientes

* Requiere un repositorio git externo para los clústeres
* Puede resultar complicado de configurar
* Los cambios en sistemas git externos pueden impedir que PSU se sincronice
* Las actualizaciones incrementales de recursos son complicadas y propensas a errores
* Editar directamente en instancias de PSU compartidas puede resultar problemático para equipos grandes

### Despliegues

Los despliegues proporcionan una forma de aplicar paquetes de despliegue inmutables a clústeres de PowerShell Universal. No se requieren sistemas externos, y los paquetes de despliegue son simplemente módulos de PowerShell que pueden almacenarse en la base de datos o, opcionalmente, en repositorios externos de recursos de PowerShell. Los despliegues no contienen ningún historial de ficheros ni se integran con el control de código fuente. Los despliegues pueden crearse en PowerShell Universal o fuera de él con cmdlets estándar de PowerShell.

#### Ventajas

* Sencillos de crear y desplegar con cmdlets estándar de PowerShell
* No se requieren sistemas externos
* Configuraciones inmutables que son sencillas de desplegar para PowerShell Universal
* Pueden integrarse con repositorios de recursos de PowerShell para el versionado

#### Inconvenientes

* El control de código fuente debe realizarse fuera de PSU
* Se requieren sistemas externos para automatizar los despliegues
* La reconfiguración puede llevar tiempo, ya que se restablece toda la configuración del servidor


---

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