BaremetalThis document describes the procedure for customizing and deploying the base FMN OS image along with provisioning storage volumes,
and configuring the necessary networking to support Fabric Manager on baremetal following the CSM upgrade.
FMNs) can be added only after the CSM upgrade has been completed.Post CSM Upgrade to CSM 1.7.1, if an administrator wishes to enable Fabric Manager on baremetal, they must follow below procedure.
The administrator must update the SHCD to include the placement and cabling details of the new FMNs.
Verify that the BMC of each FMN is configured with the correct root user credentials.
The FMN base image creation process includes node discovery, configuration, and base image customization. The base image contains only the essential artifacts required for deployment.
The following steps detail the process for generating the FMN image.
Adapt and customize the current NCN Kubernetes image for compatibility with FMN node requirements.
Create sat bootprep configuration file (fmn_bootprep.yaml) for FMN as below.
Note: Ensure that the fmn_bootprep.yaml configuration file is updated with the official CSM released versions and the appropriate commits on playbooks before proceeding.
For Example:
ncn-m001:~ # cat fmn_bootprep.yaml
schema_version: 1.0.2
configurations:
- name: fmn-bm-default-configuration
layers:
- name: fmn-nodes-bm
playbook: ncn_nodes.yml
git:
commit: 64c8753fbc3143ec8b889a755a445b5bbc8007fd
url: https://api-gw-service-nmn.local/vcs/cray/csm-config-management.git
- name: fmn-initrd-bm
playbook: ncn-initrd.yml
git:
commit: 64c8753fbc3143ec8b889a755a445b5bbc8007fd
url: https://api-gw-service-nmn.local/vcs/cray/csm-config-management.git
images:
- name: fabricmanager-bm-node-image-1.0.0
base:
product:
name: csm
version: 1.7.1
type: image
filter:
prefix: secure-kubernetes
configuration: fmn-bm-default-configuration
configuration_group_names:
- Management_Fabric
Execute the commands below on any master node to generate the new FMN image and upload it to the S3 storage.
(ncn-m#) First set bootprep file path:
# BOOTPREP_FILE_PATH=./fmn_bootprep.yaml
(ncn-m#) Now execute the sat bootprep run command below to generate the new base image and upload it to S3.
sat bootprep run \
--limit images --limit configurations \
--overwrite-images --overwrite-configs \
--format json \
--cfs-version v3 \
--bos-version v2 \
$BOOTPREP_FILE_PATH
Note: Using the --overwrite-images option in the command above will overwrite any previously uploaded images in S3.
Follow the steps below to register FMNs in CSM (SLS/HSM/BSS) and configure the required network, storage, and cloud-init settings in BSS. These configurations will be provisioned automatically during node boot.
Follow prerequisites section of Add_Remove_Replace_NCNs.
Follow NCN Add prerequisites section which contains the prerequisites specific to the node addition procedure.
Allocate NCN IP Addresses
Follow Step-1 of NCN Add Procedure for allocating NCN IP addresses.
Add NCN data
Follow Step-3 of NCN Add Procedure for adding NCN data.
For Example:
canu generate network config -a TDS --csm 1.7 --custom-config custom_switch_config.yaml --edge Arista --sls-file sls_input_file.json --ccj surtur-ccj.json --folder output (--enable-nmn-isolation --nmn-pvlan <pvid>)
The configuration generated here will contain updates for the leaf-bmc switch(es) for the Fabric Manager node BMCs and updates to either the spine switches or the leaf switches for the bonded connection.
For Example:
canu validate switch config --ip 10.254.0.4 --generated output/sw-leaf-bmc-001.cfg
Note: CANU will likely suggest the removal of the snmpv3 user, this is because the SNMP configuration is not held in the custom_config.yaml file because it’s not permitted to store secrets in GitHub. Do NOT remove this configuration from the switch.
Take extreme care when manipulating ACLs, if CANU suggests moving a “permit any …” rule be sure to create the new rule before removing the old one. It is possible to lose access to the switch if the ACLs are not applied in the correct order.
Upon completion of the FMNs add procedure, the corresponding FMN entries will be populated in SLS, HSM, and BSS. The required network, storage and other cloud-init configurations are added to BSS and would be applied when the FMN node boots.
Proceed to boot the FMN nodes (using iPXE boot commands) with the FMN bare-metal base image Boot NCN.
After the Fabric Manager nodes have been deployed and are running, join them to Spire to avoid issues with Spire tokens.
ncn-m001:~ # /opt/cray/platform-utils/spire/fix-spire-on-fmn.sh
Check if we are able to access both FMN nodes (fmn001 and fmn002):
ncn-m001:~ # ssh fmn001
Last login: Thu Dec 4 11:25:30 2025 from 10.252.1.10
...
ncn-m001:~ # ssh fmn002
Last login: Thu Dec 4 05:03:46 2025 from 10.252.1.10
...
Check if both FMN nodes are shown under sat status:
ncn-m001:~ # sat status | grep fmn
INFO: All values for 'Most Recent Session Template' are 'MISSING', omitting key.
| x3000c0s28b0n0 | fmn001 | Node | 100011 | On | OK | True | X86 | River | Management | FabricManager | Sling | True | fmn-bm-default-configuration | configured | 0 | stable | MISSING | MISSING |
| x3000c0s29b0n0 | fmn002 | Node | 100012 | On | OK | True | X86 | River | Management | FabricManager | Sling | True | fmn-bm-default-configuration | configured | 0 | stable | MISSING | MISSING |
Optionally check more details on the FMN nodes
For Example:
ncn-m001:~ # XNAME=x3000c0s28b0n0
ncn-m001:~ # cray hsm state components describe "${XNAME}" --format toml
ID = "x3000c0s28b0n0"
Type = "Node"
State = "On"
Flag = "OK"
Enabled = true
Role = "Management"
SubRole = "FabricManager"
NID = 100011
NetType = "Sling"
Arch = "X86"
Class = "River"
Check NMN, CMN, HMN, CHN, metal and virtual IP configuration for both FMN nodes (fmn001 and fmn002).
Note: NMN and HMN should be having additional FMN VIPs also allocated.
ncn-m001:~ # cray sls networks list
...
[[results.ExtraProperties.Subnets.IPReservations]]
Aliases = [ "fmn001-cmn", "time-cmn", "time-cmn.local",]
Comment = "x3000c0s28b0n0"
IPAddress = "10.102.193.42"
Name = "fmn001"
...
[[results.ExtraProperties.Subnets.IPReservations]]
Aliases = [ "fmn001-mtl", "time-mtl", "time-mtl.local",]
Comment = "x3000c0s28b0n0"
IPAddress = "10.1.1.10"
Name = "fmn001"
...
[[results.ExtraProperties.Subnets.IPReservations]]
Aliases = [ "fmn001-nmn", "time-nmn", "time-nmn.local", "x3000c0s28b0n0", "fmn001.local",]
Comment = "x3000c0s28b0n0"
IPAddress = "10.252.1.13"
Name = "fmn001"
[[results.ExtraProperties.Subnets.IPReservations]]
Aliases = [ "fmn-vip.local",]
Comment = "fmn-virtual-ip"
IPAddress = "10.252.1.4"
Name = "fmn-vip"
...
[[results.ExtraProperties.Subnets.IPReservations]]
Aliases = [ "fmn001-mgmt",]
Comment = "x3000c0s28b0"
IPAddress = "10.254.1.21"
Name = "x3000c0s28b0"
[[results.ExtraProperties.Subnets.IPReservations]]
Aliases = [ "fmn001-hmn", "time-hmn", "time-hmn.local",]
Comment = "x3000c0s28b0n0"
IPAddress = "10.254.1.22"
Name = "fmn001"
[[results.ExtraProperties.Subnets.IPReservations]]
Comment = "fmn-virtual-ip"
IPAddress = "10.254.1.2"
Name = "fmn-vip"
...
[[results.ExtraProperties.Subnets.IPReservations]]
Aliases = [ "fmn001-chn", "time-chn", "time-chn.local",]
Comment = "x3000c0s28b0n0"
IPAddress = "10.102.193.206"
Name = "fmn001"
For Example:
cray sls hardware describe x3000c0s28b0n0
Example Output:
Parent = "x3000c0s28b0"
Xname = "x3000c0s28b0n0"
Type = "comptype_node"
Class = "River"
TypeString = "Node"
LastUpdated = 1770352943
LastUpdatedTime = "2026-02-06 04:42:23.048807 +0000 +0000"
[ExtraProperties]
Aliases = [ "fmn001",]
NID = 100011
Role = "Management"
SubRole = "FabricManager"
ethernetInterfaces should be updated with the same allocated IPsFor Example:
cray hsm inventory ethernetInterfaces list --component-id x3000c0s28b0n0 --format json
Example Output:
[
{
"ID": "1423f200029a",
"Description": "",
"MACAddress": "14:23:f2:00:02:9a",
"LastUpdate": "2026-02-06T12:57:53.593753Z",
"ComponentID": "x3000c0s28b0n0",
"Type": "Node",
"IPAddresses": []
},
{
"ID": "1423f2028e93",
"Description": "",
"MACAddress": "14:23:f2:02:8e:93",
"LastUpdate": "2026-02-06T12:57:53.47447Z",
"ComponentID": "x3000c0s28b0n0",
"Type": "Node",
"IPAddresses": []
},
{
"ID": "1423f200029b",
"Description": "",
"MACAddress": "14:23:f2:00:02:9b",
"LastUpdate": "2026-02-06T12:57:53.515843Z",
"ComponentID": "x3000c0s28b0n0",
"Type": "Node",
"IPAddresses": []
},
{
"ID": "00e0ed3210ed",
"Description": "CSI Handoff MAC",
"MACAddress": "00:e0:ed:32:10:ed",
"LastUpdate": "2026-02-06T12:57:53.362998Z",
"ComponentID": "x3000c0s28b0n0",
"Type": "Node",
"IPAddresses": []
},
{
"ID": "1423f2028e92",
"Description": "Bond0 - bond0.nmn0- kea",
"MACAddress": "14:23:f2:02:8e:92",
"LastUpdate": "2026-02-06T13:00:14.114892Z",
"ComponentID": "x3000c0s28b0n0",
"Type": "Node",
"IPAddresses": [
{
"IPAddress": "10.252.1.13"
},
{
"IPAddress": "10.102.193.42"
},
{
"IPAddress": "10.1.1.10"
},
{
"IPAddress": "10.102.193.205"
},
{
"IPAddress": "10.254.1.22"
}
]
},
{
"ID": "00e0ed3210ec",
"Description": "CSI Handoff MAC",
"MACAddress": "00:e0:ed:32:10:ec",
"LastUpdate": "2026-02-06T12:57:53.327619Z",
"ComponentID": "x3000c0s28b0n0",
"Type": "Node",
"IPAddresses": []
}
]
Note: BSS global parameters also should have been populated with FMN IPs and FMN VIP
For Example:
cray bss bootparameters list --format json --name x3000c0s28b0n0
cray bss bootparameters list --hosts Global --format json
Check if both LVM partitions /dev/mapper/metalvg0-SCFIRMWARE and /dev/mapper/metalvg0-SLINGSHOT created and mounted under /opt/cray/FW/sc-firmware and /opt/slingshot respectively on both FMN nodes (fmn001 and fmn002).
fmn001:~ # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 2.2G 1 loop /run/rootfsbase
sda 8:0 0 3.5T 0 disk
├─sda1 8:1 0 476M 0 part
│ └─md127 9:127 0 475.9M 0 raid1 /metal/recovery
├─sda2 8:2 0 22.8G 0 part
│ └─md125 9:125 0 22.8G 0 raid1 /run/initramfs/live
├─sda3 8:3 0 139.7G 0 part
│ └─md124 9:124 0 139.6G 0 raid1 /run/initramfs/overlayfs
└─sda4 8:4 0 139.7G 0 part
└─md126 9:126 0 279.1G 0 raid0
├─metalvg0-SCFIRMWARE 254:0 0 80G 0 lvm /opt/cray/FW/sc-firmware
└─metalvg0-SLINGSHOT 254:1 0 120G 0 lvm /opt/slingshot
sdb 8:16 0 3.5T 0 disk
├─sdb1 8:17 0 476M 0 part
│ └─md127 9:127 0 475.9M 0 raid1 /metal/recovery
├─sdb2 8:18 0 22.8G 0 part
│ └─md125 9:125 0 22.8G 0 raid1 /run/initramfs/live
├─sdb3 8:19 0 139.7G 0 part
│ └─md124 9:124 0 139.6G 0 raid1 /run/initramfs/overlayfs
└─sdb4 8:20 0 139.7G 0 part
└─md126 9:126 0 279.1G 0 raid0
├─metalvg0-SCFIRMWARE 254:0 0 80G 0 lvm /opt/cray/FW/sc-firmware
└─metalvg0-SLINGSHOT 254:1 0 120G 0 lvm /opt/slingshot
sdc 8:32 0 3.5T 0 disk
sdd 8:48 0 3.5T 0 disk
fmn001:~ # mount | grep /opt/cray/FW/sc-firmware
/dev/mapper/metalvg0-SCFIRMWARE on /opt/cray/FW/sc-firmware type ext4 (rw,relatime,stripe=256)
fmn001:~ # mount | grep /opt/slingshot
/dev/mapper/metalvg0-SLINGSHOT on /opt/slingshot type ext4 (rw,relatime,stripe=256)
Check if all the required repos are added on both FMN nodes (fmn001 and fmn002) in order to install prerequisite OS RPMs required during Slingshot Software installation.
For Example:
fmn001:~ # zypper lr
Repository priorities are without effect. All enabled repositories share the same priority.
# | Alias | Name | Enabled | GPG Check | Refresh
---+-----------------------------------------------------------------------+--------------------------------------------------+---------+-----------+--------
1 | SUSE-25.7.250709-SLE-Module-Development-Tools-15-SP6-x86_64-Pool | SUSE-25.7.250709-SLE-Module-Development-Tools--> | Yes | ( ) No | Yes
2 | SUSE-25.7.250709-SLE-Module-Legacy-15-SP7-x86_64-Updates | SUSE-25.7.250709-SLE-Module-Legacy-15-SP7-x86_-> | Yes | ( ) No | Yes
3 | SUSE-25.7.250709-SLE-Module-Server-Applications-15-SP7-x86_64-Pool | SUSE-25.7.250709-SLE-Module-Server-Application-> | Yes | ( ) No | Yes
4 | SUSE-SLE-Module-Basesystem-15-SP6-x86_64-Pool | SUSE-SLE-Module-Basesystem-15-SP6-x86_64-Pool | Yes | ( ) No | Yes
5 | SUSE-SLE-Module-Containers-15-SP7-x86_64-Updates | SUSE-SLE-Module-Containers-15-SP7-x86_64-Updates | Yes | ( ) No | Yes
6 | csm-embedded | csm-embedded | Yes | ( ) No | Yes
...
For install/ upgrade Fabric Manager on the FMNs please refer section “3 Install HPE Slingshot Fabric Manager software on bare metal servers” in HPE Slingshot Installation Guide for CSM PDF.