BIOS configuration

A BIOS configuration is taken off a machine that has been tuned, stored under a name, and applied to other machines of the same type — the same shape as grabbing and pushing an image. Nothing applies a BIOS configuration unless you ask; it is never automatic.

It works over Redfish and needs BMC access on the nodes involved, with an account of at least ReadOnly for a grab and Operator for a push. The board's BMC must expose the BIOS resource and its attribute registry; boards that do not are reported as such.

Grabbing

# luna node biosgrab node001 -b hpc-tuned
# luna biosconfig show hpc-tuned
# luna biosconfig show hpc-tuned --settings     # every stored attribute

The grab creates the configuration. What is stored is decided by the machine's own attribute registry, not by a list Luna keeps per vendor: anything the registry marks unique, read-only, immutable or write-only stays behind, as does anything without a value, anything the registry does not describe, anything whose value carries the machine's identity, and anything the configuration's exclude list names. The exclude list is editable, so a site can leave out what Luna would otherwise carry:

# luna biosconfig change hpc-tuned --grab_exclude "*AssetTag*, *SerialNumber*, *Boot Option*"

Patterns match the attribute's name and the registry's display name, which is what makes them usable on a board that calls its settings SETUP042.

Changing an entry

A stored configuration can be edited one entry at a time, either by the attribute name the board publishes or by a concept that Luna translates for the board type:

# luna biosconfig change hpc-tuned --set hyperthreading=off
# luna biosconfig change hpc-tuned --set sriov=on --set boot_mode=uefi
# luna biosconfig change hpc-tuned --set ProcessorHyperThreading=Disabled

A concept the board type cannot express is refused by name, so a typo does not silently land as a new attribute. clone copies a configuration to start a variant from.

Assigning and pushing

A configuration can be assigned to a group or a node; the node's assignment wins. A push without a name pushes what is assigned.

# luna group change gpu -bc hpc-tuned
# luna node biospush node002                   # what node002 is assigned
# luna node biospush node002 -b hpc-tuned      # a named configuration
# luna group biospush gpu

A push is queued and reported as it goes: one stage is a write, a reset and a wait for the machine to finish POST, and a configuration whose attributes depend on one another needs more than one stage. Running a push twice is safe — the plan is recomputed against the machine, and a node that already matches is left alone.

-m decides what happens when the configuration was grabbed at a different BIOS version than the target runs: strict refuses, warn proceeds and says so, ignore does not look. The default is the cluster setting. A different manufacturer or model is refused whatever is passed.

Status

# luna biosconfig status
# luna biosconfig status --all            # every node, matched ones included
# luna biosconfig status node002
# luna biosconfig status -g gpu

Status reads the stored inventory and contacts nothing, so it answers for a cluster that is mostly switched off, in one query. It shows counts first and rows only for the nodes that need attention:

State Meaning
matched the last read found the node holding its configuration
drifted it matched once and the BIOS has changed since — outside Luna, or a push that half landed
collected the BIOS has been read and matches no stored configuration
unknown no Redfish inventory has been taken yet

Status will not say how many stages a node still needs; that requires the board's live values. Ask the machine with biospush, which is a no-op when the configuration has landed.

Booting into the BIOS setup

To get a node into its BIOS setup screen once, without changing anything permanent:

# luna control nextboot bios node001      # one-shot boot to setup, then reset
# luna control nextboot status node001
# luna control nextboot clear node001

The override applies to the next boot only and needs Redfish; the console (lconsole) then shows the setup screen.