On this page
Windows Subsystem for Linux is een feature op de SBB Digitale Werkplek (DWP) waarmee PS 1.1.2 RWS IV Ontwikkelaar/Engineer/Data Scientist zoals ontwikkelaars, engineers en data scientists GitOps gebaseerd werken kunnen werken.
Daarnaast kunnen externe medewerkers met een Windows 11 werkplek ook gebruik maken van deze feature.
Dit feature is ondersteunend aan ABB: 2.2.2 GitOps.
Roadmap
Status in beheer name
TOPdesk: A010429 (Microsoft Windows Subsystem for Linux 2.6.3.0)
Er is een test policy aangemaakt en een PoC ingericht op L226787 met de de group policies voor WSL2. Ook is de Defender plugin voor WSL geinstalleerd.
Het aanvragen van WSL2 als nieuwe applicatie: M260610894
Samenvatting
WSL2 is een standaard onderdeel binnen Windows 11. Het biedt een Linux omgeving binnen de context van de gebruiker waarvoor (na installatie) geen administratieve rechten voor de gebruiker nodig zijn om er van gebruik te kunnen maken en om de feature te beheren.
Standaard wordt de Linux omgeving op basis van Ubuntu aangeleverd naar de gebruiker. Hoewel het mogelijk om voor andere distro's te kiezen, wordt alleen de Ubuntu Distro ondersteund vanuit Rijkswaterstaat.
De gebruiker kan Windows Subsystem for Linux installeren via het Bedrijfsportaal als C applicatie, als deze over een door RWS beheerde SBB Digitale Werkplek (DWP)beschikt. BYOD gebruiker kunnen deze instructies volgen. Met de installatie wordt WSL2 ingeschakeld en Ubuntu als standaard distributie geïnstalleerd. De gebruiker wordt gevraagd om de gebruikersnaam te bevestigen en moet een wachtwoord voor root toegang (sudo wachtwoord) invoeren. Dit wachtwoord is nodig als de distributie moet worden bijgewerkt.
Van data binnen de WSL omgeving wordt geen back-up gemaakt. Uitgangspunt is dat de gebruikers bestanden op GitLab of een andere Git gebaseerd dienst worden bewaard.
De gebruiker kan bij zijn persoonlijke bestanden in WSL2 bestanden via de Windows Verkenner of via het UNC pad \\wsl.localhost\Ubuntu\home\{gebruikersnaam}.
WSL is via de command prompt (cmd.exe) te starten via het commando wsl.exe. Zie de --help optie voor alle mogelijkheden.
Binnen de Ubuntu distributie in WSL (Linux) zijn standaard applicatues python3 en git aanwezig, en kunnen aanvullend via apt noodzakelijke tools worden geïnstalleerd.
Als meer afhankelijkheden nodig zijn is het sterk aanbevolen deze te centraal managen via een Dev container die binnen een Git repo kan worden gedefiniëerd. Dit zorgt standaard voor de juiste versies en afhankelijkheden.
Isolatie en connectiviteit
WSL2 is volledig gescheiden (Sandbox) van de Windows omgeving. Wel is er beperkte bestandsuitwisseling mogelijk, en is er Internet connectiviteit.
Omdat er door de integratie van GSA DNS tunneling wordt gedaan, wordt dit expliciet uitgezet voor WSL2.
De instellingen worden verder beperkt via de Intune policy voor WSL: Zie ook het overzicht op deze pagina voor de instellingen die hiervoor gemaakt worden.
Omdat GSA niet gebruikt kan worden is er alleen Internet toegang beschikbaar. Hierbij wordt gebruik gemaakt van de bestaande connectiviteit van de DWP.
Toegang tot het bedrijfsnetwerk (GSA)
Het Linux Subsystem for Windows kan geen gebruik maken van de ZTNA optie (Microsoft Global Secure Access) van de Digitale Werkplek. Er is uitsluitend Internet toegang.
Externe toegang tot GitLab
Voor toegang van uit WSL2 tot GitLab via git://git.rws.nl en via https://git.rws.nl een TLS certificaat aangevraagd worden.
Het vereiste certificaat dienst in het ~.gitconfig bestand binnen WSL2 te worden geconfigureerd.
Beheer
Het beheer van de Linux omgeving is de verantwoordelijkheid van de gebruiker. De gebruiker heeft sudo rechten om dit te kunnen doen en wordt bij installatie gevraagd een wachtwoord te kiezen.
De gebruiker verplicht zich om de omgeving veilig te houden door regelmatig updates uit te voeren met de volgende commando's:
sudo apt update
sudo apt upgrade
Beheer kan de omgeving verwijderen als daar aanleiding toe is.
De gebruiker kan zelf de omgeving wissen/recreëren via het wsl --unregister Ubuntu commando (er van uitgaand dat de standaard Ubuntu distributie in gebruik) is (let op, dit verwijderd alle bestanden binnen WSL, en er is geen backup!).
Daarna kan met wsl --install Ubuntu een compleet nieuwe omgeving worden neergezet. Er wordt opnieuw om een gebruikersnaam en sudo wachtwoord gevraagd.
Het is ook mogelijk om een andere distributie te kiezen, of een 2de WSL omgeving er naast te installeren. Het command wsl -list toont de geïnstalleerde distributies, met wsl --list --online wordt een overzicht getoond van alle beschikbare integraties.
Elke integratie heeft zijn eigen data space, die ook toegankelijk is via de Windows Verkenner.
De gebruiker kan zelf via via de verkenner of via de commandline backups maken. Dit wordt niet centraal geregeld.
Testplan voor oplevering WSL2 via het bedrijfsportal
- De Ubuntu distro is voorgeïnstalleerd met `wsl --install ubuntu --no-launch`
- De eerste keer dat de gebruiker WSL start (wsl.exe) wordt gevraagd om een gebruikersnaam en SUDO wachtwoord. De default voor de gebruikersnaam is is ingevuld (alleen voor Ubuntu).
- `wsl.exe` worden gestart vanuit een command prompt (`cmd.exe`) of via het start menu.
- De gebruiker kan zelf extra distributies installeren via `wsl --install ubuntu --name testomgeving --no-launch`.
- De gebruiker kan een distro weer opruimen via `wsl --unregister {naam}`. Overzicht via `wsl --list`. Beschikbare distro's `wsl --list --online`. Hiermee wordt ook alle data verwijderd binnen de WSL distro omgeving.
- Binnen de WSL distro (test met de default distro Ubuntu) kan de gebruiker met `sudo apt update` en `sudo apt upgrade` de omgeving bijwerken.
- Na updaten kan de gebruiker Podman installeren binnen de wsl met `sudo apt install podman`.
- Binnen de WSL (Ubuntu) is python3 standaard geïnstalleerd.
- Git kan worden geïnstalleerd met `sudo apt install git`.
Beveiliging
Er is een WSL2 plugin voor Microsoft Defender for Endpoint. Deze kan zonder gebruikers interactie worden geïnstalleerd.
GitOps gebaseerd werken met Dev containers
Het werken met Dev containers vereist de installatie van Docker desktop of Podman. Docker Desktop vereist een licentie voor zakelijk gebruik. Een gratis alternatief is Podman, dit kan binnen WSL worden geïnstalleerd met:
sudo apt install podman
We ondersteunen het gebruik van Visual Studio Code (VSCode), wat de gebruiker zelf kan installeren binnen de gebruikers context. Binnen VSCode dient de Dev containers Add-on geïnstalleerd te zijn.
De instellingen van de Add-on moeten worden aan om gebruik te maken van Podman in plaats van Docker:
In essentie moet het Docker Compose Path en het Docker Path worden aangepast naar respectievelijk podman-compose en podman.
Nadat dit is gedaan kan binnen WSL2 een repo met devcontainer ondersteuning naar wens worden gecloond en kan met het command code . in de root van de project map Visual Studio Code worden gestart om de devcontainer te bouwen en te starten.
Dit zal in eerste instantie in WSL2 gebeuren. Zodra Visual Studio Code ziet dat er een devcontainer definitie is, dan zal deze vragen om inplaats van in WSL het project in een devcontainer te openen.
Na het bouwen zal Visual Studio Code de recente projecten onthouden kan een project direct worden geopend door Visual Studio Code te starten.
Intune Settings voor WSL
Zie onderstaande tabel voor de instellingen die geconfigureerd moeten worden De met een* gemarkeerde settings wordt geadviseerd uit te schakelen (Disabled):
| Setting Name | Value | Omschrijving |
|---|---|---|
| Allow the Windows Subsystem for Linux | Enabled | Dit schakelt WSL2 in. When set to disabled, this policy disables access to the Windows Subsystem For Linux for all users on the machine. |
| Configure default networking mode | Mirrored | Dit zorgt er voor dat we binnen WSL dezelfde untrusted netwerk context hebben als doe van de werkplek. Alleen is GSA niet beschikbaar. Meer info: Accessing network applications with WSL |
| Allow the Inbox version of the Windows Subsystem for Linux* | Disabled | When set to disabled, this policy disables the inbox version (optional component) of the Windows Subsystem For Linux. If this policy is disabled, only the store version of WSL can be used. Learn more about the difference between Store WSL and Inbox WSL here |
| Allow WSL1* | Disabled | When set to disabled, this policy disables WSL1. When disabled, only WSL2 distributions can be used. |
| Allow the debug shell | Disabled | When set to disabled, this policy disables the debug shell (wsl.exe --debug-shell). This policy only applies to Store WSL. |
| Allow custom kernel configuration* | Disabled | When set to disabled, this policy disables custom kernel configuration via .wslconfig (wsl2.kernel). This policy only applies to Store WSL. |
| Allow kernel command line configuration* | Disabled | When set to disabled, this policy disables kernel command line configuration via .wslconfig (wsl2.kernelCommandLine). This policy only applies to Store WSL. |
| Allow custom system distribution configuration | Disabled | When set to disabled, this policy disables custom system distribution configuration via .wslconfig (wsl2.systemDistro). This policy only applies to Store WSL. |
| Allow custom networking configuration* | Disabled | Needed to be able to update, to download Docker images within WSL2 and for networking inside Devcontainers. See: Accessing network applications with WSL | Microsoft Learn |
| Allow user setting firewall configuration* | Disabled | When set to disabled, this policy disables firewall configuration via .wslconfig (wsl2.firewall). This policy only applies to Store WSL. |
| Allow nested virtualization* | Disabled | When set to disabled, this policy disables nested virtualization configuration via .wslconfig (wsl2.nestedVirtualization). This policy only applies to Store WSL. |
| Allow kernel debugging* | Disabled | When set to disabled, this policy disables kernel debugging configuration via .wslconfig (wsl2.kernelDebugPort). This policy only applies to Store WSL. |
| Allow passthrough disk mount* | Disabled | When set to disabled, this policy disables passthrough disk mounting in WSL2 (wsl.exe --mount). This policy only applies to Store WSL. |
Mirror provenance
- Mirror source
- confluence/spaces/INFRAARCH/pages/237029175/page.metadata.json
- Storage source
- confluence/spaces/INFRAARCH/pages/237029175/page.storage.xhtml
- Access
- Committed snapshot only