Expand description
The isoloom format, version 1: what an environment looks like from outside (machines,
networks, who reaches whom, the ports that answer) and, per machine, how each kind of
target produces it (docker: and/or vm:).
Structs§
- Boot
- How a VM boots, instead of the way its image does. Paths are on the hypervisor’s host (the
hypervisor reads them, not Isoloom), so they are absolute. Vagrant’s libvirt provider boots
every field and its QEMU provider
firmware_format; the other targets refuse a machine with one. - Bridged
- How a network is bridged to the host (see
super::Network::bridged). - Cloud
Services - An environment of cloud services: a Terraform module applied into the user’s account.
- Configuration
- A machine’s configuration: an app’s
steps(all of theminstall), or a catalogue entry’s phases, resolved from what the author wrote. Set by lowering, never written in a spec. - Constraints
- What the network an environment runs in imposes, applied on every target: images pulled through the customer’s registry, packages through their mirrors, outbound HTTP through their proxy, time from their servers.
- Controller
- The controller’s settings (
controller:), the fields a machine uses for the same things. - Declared
- A check Isoloom runs itself. Exactly one of
http,tcp,execandscriptsays what to check;fromsays where from;expectwhat counts as passing. - Device
- A device of the host given to a container, at a path inside it.
- Device
Full - A device in full, as written.
- Disk
- A data disk a machine is given beside its own: on a VM, a disk of its own, formatted and mounted at boot (a raw one is left as it is); on the container targets, a volume at the mount (a claim of that size on Kubernetes). It goes with the machine.
- Dns
- How a machine resolves names.
- Docker
Impl - How a container produces a machine: an image, or one built from the project.
- Environment
Dns - The environment’s names in a private DNS zone (see
super::Spec::dns). - External
- An existing machine’s SSH endpoint, for the
externaltarget. - Generated
- A container image Isoloom builds from a machine’s configuration (
super::Configuration). - Gpus
- The GPUs a machine is given. A container gets the host’s GPUs through its runtime; a VM gets them passed through by its hypervisor (Proxmox) or sized with them (a cloud’s GPU instance types).
- Gpus
Full gpusin full, as written (countmay be a number orall).- Group
- A group: the machines in it, and the fields they share.
- Healthcheck
- When a machine counts as healthy, besides its ports answering: a command that
succeeds, or a page that answers. Each target waits for it where it waits for the machine
(Compose’s
depends_onandup --wait, Kubernetes’ readiness, the end of a VM’s set-up). - Http
Check - A page a healthcheck requests, on the machine itself.
- Ipv6
- A network’s IPv6 side (see
super::Network::ipv6). - Machine
- A machine of the environment: where it sits on the networks, what it serves, and how each
kind of target produces it (
docker:,vm:,external:). - Machine
File - A file placed on the machine before its workload runs: a container gets it from its runtime
(a Compose config, a Kubernetes ConfigMap), a VM from its set-up. On Compose, a project file
with an owner or a mode is read into Compose’s environment by
isoloom runand copied in. - Mirrors
- Package mirrors (see
Constraints::mirrors). - Mount
Part - A mount with its options.
- Network
- A network: an address block, whether it reaches the internet, and what routes it.
- Network
Boot - A network boot: what the network’s DHCP and TFTP server hand a booting machine.
- Network
Docker - A network on the Docker target.
- OwnProcess
- An official image’s own process: its entrypoint, and the command it runs.
- Port
- A port a machine answers on.
- Provision
- One environment-level provisioning step.
- Proxy
- An HTTP proxy (see
Constraints::proxy). - Reach
- Traffic allowed from one network to another (one way: answers come back), on some ports or all of them.
- Resources
- What a machine is given to run on; each left out takes its default.
- Secret
Mount - A secret placed in a machine: which one, at what path, owned by whom, with what mode.
- Shared
- Fields several machines share, through
common:or a group: everything about how a machine is built, nothing about what it is (its networks, ports andaccessstay its own). - Shared
Docker - A shared
docker:part: each field optional. - Shared
Vm - A shared
vm:part: each field optional. - Shared
Volume - A volume of the environment, mounted by one machine or several (see
Spec::volumes): one named volume on Docker, one claim on Kubernetes (its users on its owner’s node), and on VMs the owner’s directory served over NFS to the others, mounted at their own paths. Declared here, a volume can also outlive the environment (persistent) or be one that exists already (external). - Spec
- An environment spec. Field order in the file is kept (machines start in the order written).
- Tc
- Link impairment (Linux netem on the router’s interface into the network).
- Tmpfs
Mount - A memory-backed mount with its options.
- Tool
- A tool attached beside the environment. The built-in recipe
shell(an empty block) is a toolbox on every network: tcpdump, nmap, curl, dig, netcat (a netshoot container on Docker, a Debian VM on local VMs). Any other name takes a container image (container targets). - Virtiofs
- On Proxmox, the volume as a folder of the server, shared into each VM that mounts it
(virtiofs, Proxmox VE 8.4 or later) instead of over NFS from its owner. Opt-in, because the
folder lives on the server: Isoloom creates a directory mapping for it unless
mappingnames one made on the cluster, and the folder itself must exist on the node. Linux VMs only; every other target shares the volume as it always does. - Vlan
- A VLAN of a LAN (see
Network::vlans). - VmImage
- A machine’s own image, per target, instead of the built-in one for its OS.
- VmImpl
- How a VM produces a machine: its OS, and the steps that set it up.
Enums§
- Appliance
- A network appliance image (see
DockerImpl::appliance). The images aren’t Isoloom’s to ship: the user builds them from software they are licensed for. - Arch
- A machine’s CPU architecture. Every target has one: a container platform, a box architecture, a cloud instance family. Defaults to x86-64.
- Base
Image - What a generated image starts from.
- Boot
Device - A device a VM boots from.
- Check
- One check: a script in the project (a string), or a declared probe (a map).
- Cloud
Provider - A cloud an environment of cloud services deploys into.
- Command
Line - A command line: a text the shell runs, or a list of arguments run as they are.
- Device
Input - A device as written:
host[:guest[:permissions]], or a mapping. - Expect
- What a declared check expects: an HTTP status code, or a word (
any,blocked,open), or forexecthe text the output must contain. - Filesystem
- A data disk’s filesystem.
- Firmware
- The firmware a VM boots through.
- Firmware
Format - The format of a UEFI firmware file.
- GpuCount
- A number of GPUs, or every one the host has.
- Gpus
Input gpusas written: a count,all, or the full form.- Ipv6
Addresses - How machines get their IPv6 address on a network.
- Machine
Secret - Where a machine’s secret goes: by name alone (
/run/secrets/<name>, read-only, with the default mode of the machine’s kind), or with its path, owner and mode. - Mount
- Where a machine mounts one of its volumes: a path, or a path and the folder of a shared
volume it takes (
{ path: /srv/www, subpath: www }). - Octets
- A machine’s address on a network, as written: one last octet, or several (the first the primary one).
- Protocol
- A port’s transport protocol.
- Scalar
Schema - A text, a number or a boolean, read as text (environment values, sysctl values).
- Seal
- How strongly a machine’s offline seal holds.
internet: falseis enforced for every machine, but a privileged container can lift it from inside its own network namespace, so such a machine must declareseal: best-effortto acknowledge the seal is advisory for it (it is refused otherwise). Defaults toguaranteed. - Secret
Source - Where the runner (
isothrum up) reads a secret’s value: one store, written as a map with one key ({ env: DB_PASSWORD }). Another store is a new variant here and a reader of its own in the runtime. - Shape
- The two ways a machine can be produced.
- Target
- Where an environment can run.
- Tmpfs
- A memory-backed mount: a path, or a path with a size and a mode
(
{ path: /run, size: 64m, mode: "1777" }). - Ulimit
- A process limit (see
Machine::ulimits): one value for the soft and hard limits, or both. - Virtiofs
Cache - How a VM caches a virtiofs folder (see
Virtiofs::cache). - Winrm
- How a Windows box answers WinRM. Most boxes (StefanScherer, gusztavvargadr) use plain HTTP on 5985 with basic auth; some (GOAD’s Windows Server 2025 box) only listen on HTTPS 5986. Isoloom can’t tell from the box name, so a non-default box declares it.
Constants§
- DEFAULT_
FILE_ MODE - The mode a file gets when the spec gives none: readable by everyone, written by its owner.
- DEFAULT_
GPU_ DRIVER - The driver a machine’s GPUs use when the spec names none.
- KNOWN_
OS - The image table’s OS names, the ones every target maps to its own images (e.g. Windows from
an evaluation ISO locally, a license-included image in the cloud). A spec writes the OS as
<family>@<version>(crate::os); a parsed spec’svm.osholds one of these names. In the order ofcrate::os::FAMILIES. - MAX_
VIRTIOFS - The most virtiofs folders one Proxmox VM takes (the bpg provider’s limit on
virtiofs). - REBOOT_
STEP - The
vm.provisionstep that restarts a Linux machine; the steps after it run once the machine is back. - SECRETS_
DIR - Where secrets go when a machine names no path.
- TOOL_
RECIPES - Built-in tool recipes.
- ULIMITS
- The process limits Linux knows (
ulimit,limits.conf, systemd’sLimit*).
Functions§
- after_
drive - The path after its drive (
\app\dbofC:\app\db), whenpis an absolute Windows path on a drive. - is_
drive_ path - Whether
pis an absolute Windows path on a drive (C:\app\db,C:/app/db). - is_
reboot - Whether a
vm.provisionstep is theREBOOT_STEPrather than a file. - mapping_
id - Whether
idcan name a Proxmox directory mapping: a letter, then letters, digits,-and_(Proxmox’s configuration ids), at most 64. - seconds
- Seconds in a duration written
<number><unit>, one or more times (90s,1m30s,2h): unitsh,mands.Nonewhen it isn’t one. - secret_
variable - The environment variable a secret’s value is handed over in, to the tool that delivers it
(
ISOLOOM_SECRET_DB_PASSWORDfordb-password). Secret names are kebab-case, so two secrets never share one.