rXg Knowledge Base

Zero Touch Provisioning for rXg Installation on Dell PowerEdge

April 08, 2026

Overview

The rXg ISO installer is already nearly fully unattended. The custom bsdinstall_auto script handles disk selection, ZFS configuration, OS install, and rXg package install automatically with no interactive menus to navigate. For a single-disk Dell PowerEdge with blank storage, the install is fully hands-off from ISO boot to reboot. The remaining gap is post-install site-specific configuration (hostname, management IP, licensing, cluster join).

This article documents the installer internals, what iDRAC SCP needs to do, and the available approaches for closing the post-install provisioning gap.

Installer Boot Sequence

ISO Boot -> rc.local -> bsdinstall_auto -> post-install -> reboot -> rxgd create_defaults -> Web UI

Phase 1: rc.local (Boot Entrypoint)

Detects console type, sets environment variables from the package name, calls bsdinstall which invokes the custom bsdinstall_auto script. On success, shows a 5-second countdown then reboots.

Phase 2: bsdinstall_auto (Core Installer)

  • Disk Selection (automated): Enumerates disks, filters out USB/MMC/mounted md devices, selects all disks matching the largest capacity. On blank disks: zero prompts. On disks with existing partitions (non-VM): one confirmation dialog.
  • ZFS Configuration: Single disk is fully unattended. Multiple equal-size disks show one RAID mode dialog (stripe/mirror/RAIDZ).
  • FreeBSD Install (automated): Checksum, extract base+kernel, write fstab, install bootloader.
  • rXg Package Install (automated): Extracts custom kernel, configures local pkg repo, runs pkg install rxg.

Phase 3: post-install (System Bootstrap)

Sets root password, generates SSH keys, writes boot/service configuration with hypervisor-specific tuning, creates service users (backup, cluster, snort), installs rxgd service, sets up USB automount.

Phase 4: First Boot (create_defaults)

When rxgd starts with an empty database: creates Cloak/Huggermugger records, discovers physical interfaces, creates default config (interfaces, DHCP, DNS, RADIUS, policies, bandwidth queues, purgers).

Interactive Prompts Summary (New Dell PowerEdge, Blank Disks)

Prompt Appears? Reason
Serial terminal type No Only on serial console
Existing partitions warning No Blank disks skip this
ZFS RAID mode Only if 2+ equal-size disks Single disk = fully silent
5-second reboot countdown Yes Informational, auto-proceeds

What iDRAC SCP Needs to Do

The SCP JSON handles Phase 1 only:

  1. BIOS Boot Mode: UEFI
  2. Boot Order: Virtual CD first, then disk
  3. Virtual Media: Mount rXg ISO (HTTP/CIFS/NFS share)
  4. One-Time Boot: Virtual CD (after reboot, boots from disk)
  5. NIC Configuration: At least one NIC enabled for DHCP

iDRAC SCP deployment: ```bash

Via racadm

racadm -r -u root -p set -f scp.json -t json

Via Redfish API

curl -k -u root: -X POST \ https:///redfish/v1/Managers/iDRAC.Embedded.1/Actions/Oem/EID_674_Manager.ImportSystemConfiguration \ -H "Content-Type: application/json" -d @scp-import-payload.json ```

Post-Install Provisioning Approaches

Approach 1: Cluster Node Auto-Registration (Data Plane Nodes)

Built-in mechanism via bootstrap.yml. Fresh rXg boots, gets DHCP address. Write /space/rxg/bootstrap.yml with controller IP and auto_registration: true. Node calls POST /api/register_cluster_node.json on the controller. Controller responds with DB password if approved.

Limitation: Requires controller already set up and someone to write bootstrap.yml to the node.

After rXg comes up on DHCP with default config, a provisioning server pushes configuration via the REST API. Authenticate to https://<ip>/admin (admin/admin), then configure hostname, management IP, licensing, VLANs via API calls. No modification to installer or build process needed.

Approach 3: USB/Virtual Floppy Config Injection (Air-Gapped Sites)

The post-install script already sets up USB automount at /media. A custom first-boot script could read a ztp-config.yml from the mounted USB. This does NOT exist today -- would require an enhancement.

Approach 4: Custom ISO with Pre-Baked Config (Large Fleets)

Modify the ISO build to embed site-specific config. Truly zero-touch but requires a custom ISO per site/role.

Post-Install Verification

uname -a                          # FreeBSD version
pkg info rxg                      # rXg package version
service rxgd status               # rxgd running
zpool status                      # ZFS pool health
zfs list                          # Dataset layout
ifconfig                          # Network interfaces
sockstat -4 -l                    # Listening services (443, 3000, 8080)

Timing

  • OS install from ISO: ~5-10 minutes
  • First rxgd initialization + create_defaults: ~10-15 minutes
  • Total from ISO boot to Web UI: ~15-25 minutes

Default Credentials After Fresh Install

  • SSH root: rgnets
  • Web UI admin: admin / admin

Cookies help us deliver our services. By using our services, you agree to our use of cookies.