PowerShell Universal è da sempre dedicato alla creazione di strumenti con il codice. Per questo abbiamo dedicato molto tempo all’esperienza di modifica. Ne sono nate funzionalità come il completamento del codice e PSScriptAnalyzer nella console di amministrazione, e l’estensione Universal per VS Code.
In questo articolo vedremo come fare un passo in più e ospitare VS Code direttamente nel browser grazie a una nuova funzionalità di PSU in arrivo nella v4.2: i reverse proxy.
YARP (Yet Another Reverse Proxy)
YARP è una tecnologia, basata su ASP.NET, che consente di fare proxy verso servizi web locali e remoti. Questo significa che può usare un solo endpoint e una sola porta per esporre un altro endpoint o un’altra porta. Ad esempio, se un servizio è in ascolto sulla porta 5000 e un altro sulla 8080, può fare proxy dal primo al secondo tramite un percorso o un header configurabile.
Ad esempio, immagini una richiesta web al primo servizio su questo percorso: http://localhost:5000/myservice/mypath. Con la configurazione YARP corretta, può inoltrare quella richiesta al servizio sulla 8080, verso un percorso come http://localhost:8080/mypath. Le configurazioni YARP offrono moltissime opzioni per trasformare percorsi e header, applicare l’autenticazione e raggruppare gli endpoint.
YARP è stato integrato in PowerShell Universal v4.2 e inizierà a essere incluso nelle build nightly questa sera. Può anche consultare la documentazione attuale del plugin YARP.
code-server
code-server è un fork open source di VS Code che viene eseguito nel browser, di Coder. Questo fork di VS Code è multipiattaforma e viene eseguito come servizio, con numerose opzioni di configurazione, dalle porte all’autenticazione. Supporta anche le estensioni.
Configurare code-server con PowerShell Universal
Un utilizzo utile di code-server è usarlo come editor dei file di configurazione di PowerShell Universal. In genere, per modificare i file da remoto dovrebbe farlo tramite la console di amministrazione Universal o con l’estensione Universal per VS Code. Entrambe le opzioni hanno dei limiti, quindi avere un’istanza completa di VS Code accessibile da remoto è molto comodo.
Installare code-server
Per prima cosa installeremo e configureremo code-server. Deve essere fatto sull’istanza PSU per potervi accedere da remoto. Non lo esporremo davvero da remoto: useremo il nuovo reverse proxy PSU per applicare autenticazione e autorizzazione.
Poiché l’installazione di code-server non supporta Windows in modo diretto, useremo Docker.
Per prima cosa, scarichi l’immagine Docker.
docker pull codercom/code-server:latest
Successivamente, può avviare l’immagine Docker e mappare la directory del repository nel contenitore. Questo darà accesso ai file di configurazione 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
Nel contenitore Docker, può disattivare l’autenticazione nel file /home/coder/.config/code-server/config.yaml. Useremo invece l’autenticazione PSU.
bind-addr: 127.0.0.1:8080
auth: none
cert: false
Al termine, dovrà riavviare il contenitore. Dovrebbe poter vedere code-server andando a http://localhost:8080 nel browser.
Configurazione del reverse proxy PSU
Successivamente, dobbiamo configurare il reverse proxy PSU. Al momento si fa nel file appsettings.json. Può modificare il file in %ProgramData%\PowerShellUniversal.
La configurazione seguente espone code-server tramite il percorso /code del server PSU. Si noti che includo AdministratorRolePolicy per garantire che solo gli amministratori possano accedere a questo percorso.
{
"ReverseProxy": {
"Routes": {
"route1": {
"ClusterId": "cluster1",
"AuthorizationPolicy": "AdministratorRolePolicy",
"Match": {
"Path": "/code/{**catch-all}"
},
"Transforms": [
{
"PathRemovePrefix": "/code"
}
]
}
},
"Clusters": {
"cluster1": {
"Destinations": {
"destination1": {
"Address": "http://localhost:8080"
}
}
}
}
}
}
Al termine, avvii PowerShell Universal. Acceda andando a http://localhost:5000/login. Infine, vada a http://localhost:5000/code. Vedrà VS Code nel browser e la cartella del repository sarà accessibile. Da qui può installare estensioni (come PowerShell) e iniziare a gestire l’istanza PSU.
Precauzioni e prospettive
L’integrazione di YARP in PSU avrà usi molto più ampi dell’hosting di VS Code. Potrà inoltrare verso ogni tipo di API e applicare la stessa autenticazione e autorizzazione PSU che usa per PSU. Stiamo ancora valutando il modo migliore per esporre questa funzionalità in PSU, quindi potrebbe cambiare prima del rilascio.
Si tratta ancora di una build nightly e non supportiamo ancora questa funzionalità. Deve anche comprendere la propria implementazione di code-server per non esporre un’istanza aperta di VS Code a utenti senza autenticazione. Possono essere creati terminali che danno agli utenti remoti il controllo completo del server PSU. Coder offre uno strumento di team completo (Coder Enterprise) con più funzionalità, più adatto a questo tipo di utilizzo.
Ci scriva per feedback o domande sui forum.
Pronto a iniziare a creare? Scarichi PowerShell Universal.

Adam Driscoll