#Concepts
Each part of a build, explained one at a time. Pick whichever piece you are trying to understand.
Each page describes the concept, walks through where to find the matching controls in the visual editor, and then shows the underlying YAML so you can find your way around whichever mode you prefer.
- Sources — Every VM needs exactly one source: the disk image it boots from at the start of the build. There are three common options to choose between, and one extra option exposed only in the YAML manifest.
- Files — files is a named registry of files. Every other surface that needs a file (the virtual floppy, the HTTP directory served during boot, a file provisioner) references entries from this list by name.
- Provisioners — Provisioners are the ordered list of steps that run inside a VM after it boots. They run top to bottom; if any step fails, the build fails.
- Communicators (SSH) — A communicator is the channel the build uses to talk to the running VM while provisioning it. It is the mechanism for uploading files and executing scripts inside the guest. After the VM boots, the build needs a way to reach in and run things; the communicator is that connection.
- Networking — Every module gets an isolated network shared by its VMs. By default, the build creates a single VPC with one subnet and internet access, which is fine for most cases. Declare extra network structure only when you need something more.
- Boot Commands — A boot command types keystrokes into the VM's VNC console in order. Use it to drive boot loaders, ISO menus, and any pre-SSH setup. The communicator handles everything after SSH is up; boot commands fill in the gap before that.
- Cloud-init — Cloud images expect cloud-init for first-boot configuration: user creation, SSH key injection, package installs, custom commands. The build uses cloud-init to inject its own SSH key, so you must include a cloudInit block for cloud-image sources.
- Build-only Overrides — Some settings should differ between building a module and running clones of it. The build phase often needs: