RudderVirt

#Sources

Every VM needs exactly one source. Pick whichever fits your situation.

flowchart TD Start[How do I want to start?] --> A{Have a cloud<br/>image URL?} A -- yes --> B[source.url] A -- no --> C{Installing from<br/>ISO media?} C -- yes --> D[source.blank: true<br/>+ isos] C -- no --> E{Layering on top<br/>of a previous build?} E -- yes --> F[source.buildRef] E -- no --> H[source.containerDisk]

#source.url

Pull a disk image from any HTTP/HTTPS URL. Best for cloud images (qcow2 from Debian, Ubuntu, Fedora, Rocky, AlmaLinux, etc.).

source:
    url: 'https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2'

The URL is fetched once per build. Pin to a specific date or release if you need reproducibility (/bookworm/20250214-2056/ instead of /bookworm/latest/).

#source.blank + isos

Empty disk; you install the OS from an ISO. Required for Windows and any Linux distro that doesn't ship a cloud image.

source:
    blank: true
isos:
    - url: 'https://cdimage.debian.org/cdimage/.../debian-12.9.0-amd64-netinst.iso'
      checksum: '1257373c706d8c07e6917942736a865dfff557d21d76ea3040bb1039eb72a054'
disks:
    - name: rootdisk
      size: '25Gi'

checksum is optional but strongly recommended. ISOs are cached by checksum — if you reuse the same ISO across builds, only the first one downloads it.

Disks are capped at 50 GiB.

#source.buildRef (layered builds)

Source from another build's output. The image is whatever the referenced build captured. See Layered builds.

source:
    buildRef:
        name: base-debian
        vmName: builder # required if base build has multiple VMs

#source.containerDisk

Use a container image as a disk. Useful for community-maintained images published in the containerDisk format.

source:
    containerDisk: 'quay.io/containerdisks/fedora:39'