pub enum Step {
Show 24 variants
Prelude,
DiskGrow,
Disks {
disks: Vec<DataDisk>,
},
Settings,
Hosts {
entries: Vec<(Ipv4Addr, Vec<String>)>,
},
Routes {
routes: Vec<Route>,
default: Option<Ipv4Addr>,
},
Ipv6 {
addresses: Vec<(Ipv4Addr, Ipv6Addr)>,
routes: Vec<Route6>,
},
Trunks,
MoreAddresses {
addresses: Vec<MoreAddresses>,
},
Volumes {
paths: Vec<String>,
},
SharedVolume {
volume: String,
path: String,
role: SharedRole,
},
Project,
Files {
files: Vec<MachineFile>,
},
Inputs {
persist: bool,
},
Secrets,
WaitFor {
machine: String,
ports: Vec<u16>,
},
Run {
path: String,
kind: RunKind,
creates: Option<String>,
},
Configure {
resources: Vec<Resource>,
fresh: bool,
},
Reboot,
Command,
Setup {
paths: Vec<String>,
},
Egress,
Tc,
Ready,
}Expand description
One set-up step of a VM.
Variants§
Prelude
The spec’s constraints: proxy, package mirrors, NTP (before anything downloads).
DiskGrow
Grows the root file system to the disk the machine was given.
Disks
Formats its data disks (once, when blank) and mounts them, at every boot.
Settings
The machine’s environment, sysctls and ulimits.
Hosts
The other machines by name, at the address this one reaches each at.
Fields
Routes
Routes to the networks it isn’t on, then its default route through a gateway.
Ipv6
Its IPv6 addresses, each on the interface holding its IPv4 address on that network, then its IPv6 routes through the router.
Fields
Trunks
802.1Q interfaces for the VLANs it reaches through a trunk.
MoreAddresses
Its further addresses on a network (lan: [10, 11]), each on the interface holding its
primary address there.
Fields
addresses: Vec<MoreAddresses>One entry per network where it has several.
Volumes
The directories of its own volumes.
A shared volume: served over NFS by its owner, mounted by the others.
Project
The project copied to /opt/isoloom.
Files
The machine’s files, each placed at its path with its owner and mode (a source read
from the unpacked project).
Fields
files: Vec<MachineFile>The files, in spec order.
Inputs
The inputs made available to the steps.
Secrets
Waits for isoloom run to deliver its secrets, then puts each file in place, now and at
every boot (see crate::SecretFile). Before anything that may read one: the
app’s steps, its command and its setup scripts.
WaitFor
Waits until a machine it depends on answers.
Run
One of its app’s scripts or playbooks.
Fields
Configure
A run of its recipe’s other steps (packages, files, users, services…), between its scripts, playbooks and reboots, rendered by the configuration library of its OS.
Fields
Reboot
Restarts the machine; the steps after it run once it is back.
Command
Its own command, run as a service from now on (see crate::Process).
Setup
Its setup scripts, run once with its service up, as root from the project folder.
Egress
Offline: no new connection leaves the environment.
Tc
Link impairment on its own interfaces.
Ready
Marks the machine ready, once its healthcheck passes when it has one.
Trait Implementations§
impl Eq for Step
impl StructuralPartialEq for Step
Auto Trait Implementations§
impl Freeze for Step
impl RefUnwindSafe for Step
impl Send for Step
impl Sync for Step
impl Unpin for Step
impl UnsafeUnpin for Step
impl UnwindSafe for Step
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.