Skip to main content

JoinConfigArgs

Struct JoinConfigArgs 

Source
pub struct JoinConfigArgs {
Show 14 fields pub label: Option<String>, pub controller: Option<String>, pub door: Option<String>, pub crate_dir: Option<String>, pub data_path: Option<String>, pub gpu_ram_share: Option<f64>, pub regen: bool, pub install_key: bool, pub cloud_init: bool, pub cloud_init_user: Option<String>, pub no_install_key: bool, pub authorized_keys: Option<String>, pub yes: bool, pub json: bool,
}
Expand description

Provision a walk-in farm in one pass: the farm overlay (fdl.<label>.yml, token stamped), an ed25519 join key born in ./.fdl/<label>/ so it cannot be shared across farms by construction, the guardrailed authorized_keys line for the chosen door, the paste-ready worker yml, a publish recipe derived from the training crate’s own manifest, and a build-freshness report. A farm IS an env overlay: fdl @<label> <cmd> targets it afterwards. Regenerating credentials for a new farm instantiation is fdl join-config <label> --regen.

Fields§

§label: Option<String>

Farm label — names fdl.<label>.yml and .fdl/<label>/. Defaults to the active env (fdl @<label> join-config).

§controller: Option<String>

How workers reach the join sshd: [user@]host[:port] (default: this box’s hostname, the invoking user, port 22).

§door: Option<String>

Guardrail door the join key opens: b (rrsync source pull, the publish-then-join default), a (read-only sftp data mount), or nologin (tunnel only).

§crate_dir: Option<String>

Training crate to derive the publish recipe from (default: the current directory; no crate there is fine — a farm can be config-only).

§data_path: Option<String>

Dataset source root workers read; under door a it is also the sshfs mountpoint (default /flodl/data there).

§gpu_ram_share: Option<f64>

Integrated-GPU host-RAM share stamped into the worker yml (APU fleets; discrete GPUs ignore it).

§regen: bool

Regenerate credentials (key and token) without asking. Workers holding the old ones stop being admitted.

§install_key: bool

Install the guardrailed line into this user’s own ~/.ssh/authorized_keys without asking (the wizard’s default offer). Only the wizard’s own line is ever touched; /etc/ssh never is.

§cloud_init: bool

Also emit a cloud-init user-data file: the worker yml, private key and systemd unit embedded, so a cloud instance boots straight into fdl join. A SECRET artifact (key + token inside).

§cloud_init_user: Option<String>

The instance user the cloud-init variant provisions for (default: ubuntu). Images that log in as root want root; DigitalOcean and the AMD Developer Cloud are that shape.

§no_install_key: bool

Skip the authorized_keys install (print + notes only).

§authorized_keys: Option<String>

Install into this authorized_keys file instead of the invoking user’s ~/.ssh/authorized_keys — for a door the default cannot reach, such as an sshd in a container (its key file is a bind mount) or a host using AuthorizedKeysFile /etc/ssh/authorized_keys.d/%u. Still consent-gated, still touches only the wizard’s own line; /etc/ssh is refused.

§yes: bool

Accept every default without prompting (non-interactive; reuses existing credentials unless --regen). Never consents to the authorized_keys install: that takes the prompt or --install-key.

§json: bool

Report as JSON on stdout. Secrets appear as file paths, never payloads.

Trait Implementations§

Source§

impl Debug for JoinConfigArgs

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FdlArgsTrait for JoinConfigArgs

Source§

fn try_parse_from(args: &[String]) -> Result<Self, String>

Parse from an explicit argv slice. First element is the program name (ignored), following elements are flags/values/positionals.
Source§

fn schema() -> Schema

Return the JSON schema for this CLI shape.
Source§

fn render_help() -> String

Render --help to a string.
Source§

fn parse() -> Self

Parse argv into Self. Uses std::env::args() by default.
Source§

fn render_help_path(argv: &[String]) -> String

Render --help for a specific argv path (program name first, then the tokens typed). The default ignores the path and returns Self::render_help — correct for a single struct, whose help is context-free. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.