mirror of
https://github.com/mulgadc/spinifex.git
synced 2026-10-19 10:52:04 +00:00
fba2103133
Add SkipFormation bool to firstboot.Config. When set, the cluster formation block (spx admin init/join) is replaced with a no-op echo, leaving formation to the provisioning controller. Wired through: autoinstall reads SPINIFEX_SKIP_FORMATION=1 from env, install.go passes it to firstboot.Config. spinifex-init.sh parses the kernel cmdline param and exports it. boot-handler.go hardcodes SPINIFEX_SKIP_FORMATION=1 so all bare-metal CI nodes skip formation — bm-bootstrap.sh always runs spx admin init/join with the correct --nodes N from nodes.json, enabling proper multi-node formation.
80 lines
2.9 KiB
Go
80 lines
2.9 KiB
Go
/*
|
|
Copyright © 2026 Mulga Defense Corporation
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
// Package install performs the disk installation steps after the UI has
|
|
// collected configuration.
|
|
package install
|
|
|
|
// Config holds all values collected by the installer UI.
|
|
type Config struct {
|
|
// Disk is the block device path to install onto (e.g. /dev/sda).
|
|
Disk string
|
|
|
|
// WAN interface — always present. The management IP lives on br-wan (a Linux
|
|
// bridge over the NIC), not on the physical NIC itself. This allows OVN/OVS
|
|
// to safely attach to the bridge without disrupting host connectivity.
|
|
WANInterface string
|
|
WANDHCPMode bool
|
|
WANAddress string // empty if WANDHCPMode
|
|
WANMask string // empty if WANDHCPMode
|
|
WANGateway string // empty if WANDHCPMode
|
|
WANDNS []string // empty if WANDHCPMode; e.g. ["1.1.1.1", "8.8.8.8"]
|
|
WANWiFiSSID string // non-empty if a WiFi NIC was selected
|
|
WANWiFiPass string // non-empty if a WiFi NIC was selected
|
|
|
|
// LAN interface — only set when 2+ NICs are present. The Geneve encap IP
|
|
// for OVN tunnels lives on br-lan. When empty, the WAN address is used.
|
|
LANInterface string
|
|
LANDHCPMode bool
|
|
LANAddress string
|
|
LANMask string
|
|
LANDNS []string
|
|
LANWiFiSSID string
|
|
LANWiFiPass string
|
|
|
|
// Node identity
|
|
Hostname string
|
|
|
|
// ClusterRole is "init" or "join".
|
|
ClusterRole string
|
|
|
|
// JoinAddr is the primary node address (host:port) when ClusterRole is "join".
|
|
JoinAddr string
|
|
|
|
// SkipFormation skips spx admin init/join in firstboot; the provisioning
|
|
// controller (e.g. bm-bootstrap.sh) owns cluster formation instead.
|
|
SkipFormation bool
|
|
|
|
// CA certificate (PEM), optional.
|
|
HasCACert bool
|
|
CACert string
|
|
|
|
// RootPassword is the password to set for the root account on the installed system.
|
|
RootPassword string
|
|
|
|
// Email is the operator's email address, used by the call-home telemetry
|
|
// endpoint to notify of important system updates and security advisories.
|
|
// Required on interactive installs; may be empty on headless/CI installs
|
|
// when SPINIFEX_EMAIL is not supplied on the kernel cmdline.
|
|
Email string
|
|
|
|
// GPUPassthrough enables VFIO GPU passthrough on this node.
|
|
// Set via SPINIFEX_GPU_PASSTHROUGH=1 on headless installs.
|
|
// Passes --gpu-passthrough to `spx admin init` during firstboot.
|
|
GPUPassthrough bool
|
|
}
|