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).
Integrated-GPU host-RAM share stamped into the worker yml (APU fleets; discrete GPUs ignore it).
regen: boolRegenerate credentials (key and token) without asking. Workers holding the old ones stop being admitted.
install_key: boolInstall 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: boolAlso 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: boolSkip the authorized_keys install (print + notes only).
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: boolAccept 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: boolReport as JSON on stdout. Secrets appear as file paths, never payloads.
Trait Implementations§
Source§impl Debug for JoinConfigArgs
impl Debug for JoinConfigArgs
Source§impl FdlArgsTrait for JoinConfigArgs
impl FdlArgsTrait for JoinConfigArgs
Source§fn try_parse_from(args: &[String]) -> Result<Self, String>
fn try_parse_from(args: &[String]) -> Result<Self, String>
Source§fn render_help() -> String
fn render_help() -> String
--help to a string.Source§fn render_help_path(argv: &[String]) -> String
fn render_help_path(argv: &[String]) -> String
--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