RudderVirt

#Hello World

The shortest useful build — a single-VM module that boots a Debian 12 cloud image

vms:
    - name: builder
      source:
          url: 'https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2'
      resources:
          cpu: 1
          memory: '1Gi'
      disks:
          - name: rootdisk
            size: '4Gi'
      communicator:
          sshUsername: debian
      cloudInit:
          userData: |
              #cloud-config
              ssh_authorized_keys: []
      provisioners:
          - type: shell
            shell:
                inline: |
                    echo "Hello from the build!"
                    sudo apt-get update
                    sudo apt-get install -y nginx
timeout: 30m

What's happening:

  • source.url — a generic cloud image. Cloud images expect cloud-init.
  • cloudInit.userData — the empty ssh_authorized_keys: [] is a placeholder; the build injects its own SSH key automatically. This block must exist for cloud-init to do its boot-time setup.
  • communicator.sshUsername: debian — the user that cloud-init creates by default in Debian images. (Use ubuntu for Ubuntu images, cloud-user for Rocky/RHEL, fedora for Fedora, etc.)
  • provisioners — runs in order, top to bottom.