Skip to content

Lab 01: First VM, First SSH

Start one Ubuntu VM, check that Yeast sees it, connect with SSH, then clean it up.

You will learn:

  • how a folder becomes a Yeast project
  • how Yeast uses a trusted base image
  • how yeast up turns yeast.yaml into a running VM
  • how to enter the guest with yeast ssh
  • the difference between stopping and destroying a project

What You Will Build

Linux host
└── yeast-lab-01/
    ├── yeast.yaml
    └── web VM
        └── Ubuntu 24.04

Before You Start

Run:

yeast doctor

Continue only after blockers are fixed.

Step 1: Create The Project

mkdir yeast-lab-01
cd yeast-lab-01
yeast init --template ubuntu-basic

Check what Yeast created:

ls -la
cat yeast.yaml

Expected entries:

  • yeast.yaml
  • .yeast/
  • README.md

Step 2: Check Supported Images

yeast pull --list

This shows the trusted images Yeast knows how to use.

You do not need to download ubuntu-24.04 manually for this lab. If the image is not cached yet, yeast up downloads and verifies it automatically.

Optional cache check:

yeast pull --cached

Step 3: Start The VM

yeast up

Yeast validates the config, prepares a disk, generates cloud-init data, starts QEMU/KVM, waits for SSH, and records state for the project.

Step 4: Verify Status

yeast status

Expected result:

  • one instance named web
  • status is running
  • an SSH port is shown

Step 5: SSH Into The VM

yeast ssh web

Inside the guest, run:

hostname
whoami
exit

The default user from the template is yeast.

Step 6: Stop The VM

yeast down

This stops the VM but keeps the project disk.

You can start it again:

yeast up

Clean Up

yeast down
yeast destroy

Warning

yeast destroy removes tracked runtime files and disks for this project.

What You Learned

You completed the smallest useful Yeast loop:

init -> up -> status -> ssh -> down -> destroy

You also saw that Yeast projects are folder-based. The config lives in yeast.yaml, while runtime state is tracked separately.

Next Lab

Continue with Cloud-Init Basics.