PowerShell Universal siempre ha consistido en crear herramientas con código. Por eso hemos dedicado mucho tiempo a la experiencia de edición. De ahí han salido funciones como el autocompletado de código y PSScriptAnalyzer en la consola de administración, y la extensión Universal para VS Code.
En este artículo veremos cómo llevar las herramientas un paso más allá y alojar VS Code directamente en el navegador con una función nueva de PSU que llega en la v4.2: los proxies inversos.
YARP (Yet Another Reverse Proxy)
YARP es una tecnología, construida sobre ASP.NET, que permite hacer proxy hacia servicios web locales y remotos. Eso significa que puede usar un solo punto de conexión y puerto para exponer otro punto de conexión o puerto. Por ejemplo, si un servicio escucha en el puerto 5000 y otro en el 8080, puede hacer proxy del primero al segundo mediante una ruta o un encabezado configurable.
Por ejemplo, imagine una solicitud web al primer servicio en esta ruta: http://localhost:5000/myservice/mypath. Con la configuración YARP adecuada, puede reenviar esa solicitud al servicio del 8080, a una ruta como http://localhost:8080/mypath. Las configuraciones de YARP ofrecen un sinfín de opciones para transformar rutas y encabezados, aplicar autenticación y agrupar puntos de conexión.
YARP se ha integrado en PowerShell Universal v4.2 y empezará a incluirse en las compilaciones nightly esta noche. También puede consultar la documentación actual del complemento YARP.
code-server
code-server es una bifurcación de código abierto de VS Code que se ejecuta en el navegador, de Coder. Esta bifurcación de VS Code es multiplataforma y se ejecuta como servicio, con numerosas opciones de configuración, de puertos a autenticación. Incluso admite extensiones.
Configurar code-server con PowerShell Universal
Un uso útil de code-server es emplearlo como editor de los ficheros de configuración de PowerShell Universal. En general, para editar ficheros en remoto tendría que hacerlo desde la consola de administración de Universal o con la extensión Universal para VS Code. Ambas opciones tienen limitaciones, así que disponer de una instancia completa de VS Code accesible en remoto resulta muy práctico.
Instalar code-server
Primero instalaremos y configuraremos code-server. Debe hacerse en la instancia PSU para poder acceder en remoto. No lo expondremos realmente en remoto: usaremos el nuevo proxy inverso de PSU para aplicar autenticación y autorización.
Como la instalación de code-server no admite Windows de forma directa, usaremos Docker.
Primero, descargue la imagen Docker.
docker pull codercom/code-server:latest
A continuación, puede iniciar la imagen Docker y asignar el directorio del repositorio al contenedor. Así tendrá acceso a los ficheros de configuración de PSU.
docker run --name code-server -p 127.0.0.1:8080:8080 `
-v /c/ProgramData/UniversalAutomation/Repository:/home/coder/project `
-e "DOCKER_USER=$ENV:USERNAME" `
codercom/code-server:latest
Dentro del contenedor Docker, puede desactivar la autenticación en el fichero /home/coder/.config/code-server/config.yaml. Usaremos la autenticación de PSU.
bind-addr: 127.0.0.1:8080
auth: none
cert: false
Cuando termine, deberá reiniciar el contenedor. Debería poder ver code-server en http://localhost:8080 en el navegador.
Configuración del proxy inverso de PSU
A continuación hay que configurar el proxy inverso de PSU. Ahora se hace en el fichero appsettings.json. Puede editar el fichero en %ProgramData%\PowerShellUniversal.
La siguiente configuración expone code-server por la ruta /code del servidor PSU. Tenga en cuenta que incluyo AdministratorRolePolicy para que solo los administradores puedan acceder a esa ruta.
{
"ReverseProxy": {
"Routes": {
"route1": {
"ClusterId": "cluster1",
"AuthorizationPolicy": "AdministratorRolePolicy",
"Match": {
"Path": "/code/{**catch-all}"
},
"Transforms": [
{
"PathRemovePrefix": "/code"
}
]
}
},
"Clusters": {
"cluster1": {
"Destinations": {
"destination1": {
"Address": "http://localhost:8080"
}
}
}
}
}
}
Cuando termine, inicie PowerShell Universal. Inicie sesión en http://localhost:5000/login. Por último, vaya a http://localhost:5000/code. Verá VS Code en el navegador y la carpeta del repositorio estará accesible. Desde ahí puede instalar extensiones (como PowerShell) y empezar a gestionar su instancia PSU.
Precauciones y perspectivas
La integración de YARP en PSU tendrá usos mucho más amplios que alojar VS Code. Podrá reenviar hacia todo tipo de API y aplicar la misma autenticación y autorización de PSU que usa para PSU. Seguimos estudiando la mejor forma de exponer esta función en PSU, así que puede cambiar antes del lanzamiento.
Sigue siendo una compilación nightly y aún no damos soporte a esta función. También debe comprender su implementación de code-server para no exponer una instancia abierta de VS Code a usuarios sin autenticación. Se pueden crear terminales que dan a los usuarios remotos el control total de su servidor PSU. Coder ofrece una herramienta de equipo completa (Coder Enterprise) con más funciones, más adecuada para ese tipo de uso.
Envíenos comentarios o preguntas en los foros.
¿Listo para crear? Descargue PowerShell Universal.

Adam Driscoll