Windows Images
CoreWeave offers a variety of Operating System base images, enhanced to run on CoreWeave Cloud. Images are stored in the vd-images
namespace.
Cloud-Init
Windows images on CoreWeave cloud use Cloudbase-Init, a Windows implementation of Canonical's cloud-init.
By default, we enable the following plugins, which are executed sequentially:
Add custom userdata
When creating a new Virtual Server on CoreWeave Cloud, instance-specific information such as user account information and SSH keys are automatically passed through as Cloud-Init Userdata. When deploying a new Virtual Server, one has the ability to add additional information via Userdata as well.
Via kubectl
YAML:
kubectl
YAML:View the rest of the source file on GitHub.
Via the CoreWeave Apps Web UI:
Within the Virtual Server deployment form, switch to the YAML tab:
Towards the bottom of the page, a commented out cloudInit section will be pre-populated. Uncomment to add custom user data:
Note
For more information on what be added via native cloud-init Userdata, see the Cloudbase Solutions documentation.
CoreWeave userdata features
There are several CoreWeave init scripts included in our base Windows image, that can be enabled via cloudInit Userdata.
Add SMB mounts
Samba shares, or any SMB/CIFS-compliant shares, can be added via cloudInit to be mounted to the first available drive letter at initial user login.
Using an example from a Samba instance hosted via CoreWeave Cloud Apps, we can derive the following information:
The SMB client's FQDN is
fil01.tenant-orgname-namespace-cpierre.coreweave.cloud
The SMB mount login information is:
Username:
gaben
Password:
hunter2
The shares mounted are named
vol01
andvol02
Using this information, we can populate the cloudInit
key-value pairs as follows:
Note
By default, available drive letters are randomized, and the first available one is selected per share. Drive letters can be manually specified by adding them, such as Drive: Z
.
Enroll a Parsec Teams machine
CoreWeave Windows images support Parsec Teams. To enroll a Parsec Teams machine, include the following in the cloudInit
block when deploying a Virtual Server:
Note
If a Parsec machine is assigned to an email that isn't part of the Team, the machine will be made available to them after they've been invited and accepted the invitation. If none of GroupId
, UserId
, or EMail
is provided, the machine will be added to the Parsec Team unassigned.
For more information on Parsec Teams and where to obtain your enrollment key, please visit Parsec's documentation.
Note
When enrolling a Parsec Teams machine, Boolean values Parsec: true
and EDID: true
will also need to be added to your manifest.
Install Additional Software
All CoreWeave Windows images are pre-loaded with the Chocolatey package manager. On non-Server editions of Windows, WinGet is included as well.
Software specified via cloudInit
is installed automatically at initial user logon:
Power-off with no interactive input
Windows images include scripts that can detect user activity such as moving the mouse or keyboard inputs. When enabled, it detects a specified period of no user input, then automatically shuts down. A prompt is presented, along with a five-minute grace period, when the timer threshold is reached. Adding the following will prompt the user after ten minutes of no activity, and shut off automatically after an additional five minutes if the prompt is not acknowledged.
Important
This feature should be combined with RunStrategy: RerunOnFailure
via vm.Spec
to prevent the instance from automatically powering back on once shutoff. Additionally, boolean flag Autologon
should be set to true
, as the idle tracker runs within the user context.
Configure Readiness Probe
The CoreWeave Cloud UI adds a Readiness Probe to Windows Virtual Servers by default to better communicate when start-up procedures have completed. Windows images include a simple TCP listener on default port 1337
to communicate with the Kubernetes API.
Learn more about Readiness Probe configuration in Configuration Options: Operating System and Root Disk.
Display requests override
Certain applications in Windows, like Parsec, can disrupt idle an inactivity timers. This means that despite setting a lock screen or screensaver timer, they may never engage when a Parsec session or other application is active.
This behavior can be overridden via cloudInit
. For Parsec or Teradici, only the application name is required. For other applications, specify the executable name.
Boolean userdata features
Some Userdata features can be enabled with Boolean values true
or false
.
Teradici PCoIP graphics agent for Windows
CoreWeave Cloud supports Teradici PCoIP on both Linux and Windows. Adding the following will install the graphics agent on initial logon, pointed to our licensing server:
Important
Teradici should not be combined with either Parsec or Virtual Display options below.
Virtual display
Many applications running on Windows require a display connected to GPU in order to render on the display. Adding the below value will attach a virtual 4K monitor to all available outputs, and disconnect the built-in VNC display.
Important
When the Virtual Display is enabled, Windows will only output to the attached GPU, making the built-in VNC terminal inaccessible.
Connecting via virtctl vnc
will result in one of the blank screens shown below:
For serial console access (Windows Special Admin Console), use virtctl console
instead.
Parsec Remote Desktop
CoreWeave strongly recommends Parsec for remote access on Windows GPU instances. Adding the following will install Parsec on initial logon:
Note
Parsec requires the use of a Virtual Display, and thus must always be installed alongside EDID: true
.
Automatic logon
This flag configures the user account created for automatic logon.
Operating System customizations
There are several modifications made to a vanilla Windows instance in order to optimize for use on CoreWeave Cloud. Depending on the use case, the following may be disabled or modified.
CoreWeave resize disk
By default, when the root disk of a Windows image is expanded, Windows will automatically expand the root disk partition to use all of the available space. Additionally, any new block volumes mounted to a Windows instance will automatically be initialized and partitioned as GPT, and formatted as NTFS.
Via the Windows Apps and Features menu, the default behavior can be modified:
Selecting Modify will prompt for an action to perform when it is detected that the root disk can be expanded. The default action of ReSize
will expand the root disk. NewPartition
will create a new partition with the unallocated space, and automatically assign a drive letter. Entering no value will disable any automatic action.
After selecting the desired re-size disk option, an additional prompt appears to set an action for newly detected RAW disks. Automatic formatting can be enabled or disabled with true
or false
.
CoreWeave auto-shutdown
Whether or not an instance powers off based on interactive user input is configured via cloudInit when an instance is initially deployed. Once an instance has already been deployed, this feature is also configurable via Windows Apps and Features:
Clicking Modify prompts for an integer value in minutes to configure auto-shutoff, or set to 0
to disable:
CoreWeave Windows update
In order to ensure system stability and predictability, the native Windows Update manager is disabled by default on CoreWeave instances. Instead, through custom scripts, updates are applied as follows:
Windows Defender updates are applied daily at 3:00AM UTC, or as soon as possible if missed. These are silent, and do not require reboots.
On the second Wednesday of the month, one day after Patch Tuesday, at 3:00AM UTC, or as soon as possible if missed:
The
PSWindowsUpdate
module is updatedOn non-Server OSes, WinGet is updated, where applicable
All Windows Updates are applied silently, without forcing reboots
If there is a pending reboot and no user is logged in, the system is rebooted to finish applying patches
If there is a pending reboot and a user logged in, the user is presented with a GUI prompt notifying them of pending system patches requiring a reboot
Each day at 3:00AM UTC, the system is again checked for pending reboots. If there is a user logged in, they are notified, and asked to reboot. If there is no user logged in, the system will automatically be rebooted.
There are no user-configurable options for CoreWeave Windows Update. To revert to the default Windows Update behavior, simply uninstall the Windows Update manager from the Windows Apps and Features menu.
CoreWeave PowerShell Profile
When launching a new PowerShell session, users are presented with some helpful system stats.
To disable this functionality, simply delete the profile:
CoreWeave PowerShell module
Included in CoreWeave Windows Images is a PowerShell module that provides functions for useful tasks and automation; moreover, some of the Cloud-Init Userdata features rely on the CoreWeave PowerShell module.
Using the CoreWeave PowerShell module
The CoreWeave PowerShell Module is a system-wide module - as all Windows Images on CoreWeave Cloud use at minimum PowerShell version 5.1, the module will be automatically imported when any of its functions are called.
To manually import the CoreWeave Module:
Get-nVidiaDeviceDriverParameters
Get-nVidiaDeviceDriverParameters
This function matches and returns properties of the currently attached NVIDIA GPU. If there is not a valid driver installed and Windows cannot identify the attached GPU, the PCI ID will attempt to be matched instead. The output from this function is formatted for use in automating NVIDIA driver downloads.
Download-nVidiaDisplayDriver
Download-nVidiaDisplayDriver
This function automates downloading drivers from NVIDIA. This function has many parameters, each of which include argument completers:
The easiest way to use this function is to combine it with Get-nVidiaDeviceDriverParameters
. The returned output will be the location of the downloaded driver file:
Install-nVidiaDisplayDriver
Install-nVidiaDisplayDriver
This function installs a downloaded NVIDIA driver file. If no path is provided, it will attempt to match and download the correct driver.
Setup will be ran directly and silently if it is detected that there is an attached NVIDIA GPU device. If no NVIDIA GPU device is detected, drivers will be manually added to the Windows Driver Store via pnputil
.
Note
-ForceInstall
will force the installation of the same or older driver version. -CleanInstall
will wipe existing driver configurations.
The easiest way to use this function is to run it directly, allowing auto-match of the attached NVIDIA GPU. If you're already running the latest driver, no action will be taken:
Note
In the event new drivers are installed, a reboot is required, but not enforced.
Configure-AutoLogon
Configure-AutoLogon
This function is called when Autologon: true
. The -Action
parameter will either enable or disable automatic logon, with $true
or $false
respectively.
The easiest way to use this function is to combine with Get-Credential
:
Enroll-ParsecTeamMachine
Enroll-ParsecTeamMachine
This function is called by the Parsec Teams Cloud-Init feature. If an instance was not enrolled at the time of deployment, enrollment can be completed silently using this function.
Invoke-SilentMSI
Invoke-SilentMSI
This function automates silently installing a provided Windows Installer file.
An example, installing PowerShell 7:
A given MSI can also be uninstalled using the same function:
Last updated