Overview
Xloud Bare Metal provisioning (powered by Ironic) treats physical servers as first-class cloud resources. Operators enroll nodes by registering their management interface credentials, introspect hardware to automatically collect CPU, RAM, disk, and NIC information, and then provision OS images directly to bare metal — with the same API workflow used for virtual machine instances. Bifrost provides a standalone enrollment and provisioning path for initial cluster bootstrap, operating independently of the full Xloud Identity and compute stack.Prerequisites
- Ironic and Ironic Conductor services enabled in your deployment
- Physical servers with accessible BMC (IPMI, Redfish, or iDRAC) on the management network
- Provisioning network configured with DHCP and PXE boot support
- Deploy image (e.g., Ubuntu 22.04 IPA) uploaded to Xloud Image Service
- Administrator role in the target project
Architecture
Service Components
| Component | Role |
|---|---|
| Ironic API | REST API for node registration, state transitions, and provisioning requests |
| Ironic Conductor | Executes node state transitions — power operations, PXE boot, disk imaging |
| Ironic Python Agent (IPA) | Lightweight OS booted in RAM during introspection and deployment; collects hardware inventory and writes disk images |
| Bifrost | Standalone provisioning tool using Ironic without the full cloud stack — used for initial cluster bootstrap |
Key Capabilities
Xloud-Developed — Bare metal provisioning is available with XPCI.
PXE / iPXE Network Boot
Nodes boot from the network using PXE or iPXE. The Ironic Conductor serves a lightweight agent image over TFTP/HTTP, which runs entirely in RAM to perform hardware introspection and disk imaging.
BMC Power Management
Full out-of-band control via IPMI and Redfish — power on, power off, reboot, boot device selection, sensor readings, and firmware inventory. No agent or OS required on the target server.
Unified Management
Manage bare metal servers and virtual machines from the same API and dashboard. The Xloud Compute scheduler places workloads on either physical or virtual hosts using a single resource pool.
Hardware Introspection
Automated discovery of CPU, RAM, disk, and NIC details. The Ironic Python Agent collects a full hardware inventory during introspection, eliminating manual data entry for node properties.
Supported BMC Types
| Vendor | BMC | Minimum Version | Driver | Notes |
|---|---|---|---|---|
| Dell | iDRAC | 9+ | idrac or redfish | Redfish preferred for newer firmware |
| HPE | iLO | 5+ | ilo or redfish | iLO REST API available alongside Redfish |
| Lenovo | XCC | 2.0+ | redfish | Lenovo XClarity Controller |
| Supermicro | BMC | Redfish-capable | redfish | Varies by motherboard model |
| Generic | IPMI 2.0 | Any | ipmi | Baseline support for all IPMI-compliant hardware |
Supported Drivers
| Driver | Protocol | BMC Type | Notes |
|---|---|---|---|
ipmi | IPMI 2.0 | Generic IPMI | Supported on most server hardware from all major vendors |
redfish | Redfish (REST/HTTPS) | DMTF Redfish v1.x | Dell iDRAC 9+, HPE iLO 5+, Supermicro BMC |
idrac | IPMI + Redfish | Dell iDRAC | Dell-specific driver with extended capabilities |
ilo | iLO REST API | HPE iLO | HPE-specific driver with HPE-native features |
irmc | iRMC | Fujitsu iRMC | Fujitsu PRIMERGY servers |
Node Provisioning Lifecycle
Ironic nodes progress through a defined set of states. Understanding this lifecycle is essential for diagnosing enrollment and provisioning issues.| State | Description |
|---|---|
enroll | Node registered in Ironic; credentials not yet validated |
manageable | Credentials validated; node is under administrator control |
inspecting | Ironic Python Agent running in RAM; collecting hardware inventory |
available | Node ready for provisioning; available to Compute scheduler |
active | OS deployed; node is running as a provisioned bare metal instance |
cleaning | Disk wipe in progress; returning node to clean state after deprovisioning |
Enrolling a Node
- Dashboard
- CLI
Navigate to bare metal nodes
Log in to the Xloud Dashboard and navigate to Admin → Bare Metal → Nodes.
Click Enroll Node.
Configure driver and credentials
| Field | Example Value | Description |
|---|---|---|
| Driver | redfish | Management interface driver |
Driver Info: redfish_address | https://192.168.1.100 | BMC URL |
Driver Info: redfish_username | admin | BMC username |
Driver Info: redfish_password | ***** | BMC password |
Driver Info: redfish_verify_ca | false | Skip TLS verification for self-signed BMC certs |
| Name | compute-node-04 | Human-readable node name |
Transition to manageable
After enrollment, select the node and click Set Manageable. Ironic validates
the BMC credentials by attempting a power state query.
Node transitions to manageable state. Power state is reported as power on or power off.
Run hardware introspection
Select the node in manageable state and click Inspect. Ironic instructs
the BMC to PXE-boot into the Ironic Python Agent. Introspection typically takes
3–5 minutes.
Node returns to manageable state. The Overview tab shows detected CPU, RAM, disk, and NIC details.
Bifrost Standalone Enrollment
Bifrost is used to provision the first physical nodes in a new cluster — before Xloud Identity and the full API stack are running. It provides a subset of Ironic functionality without requiring Keystone authentication.Network Requirements
| Network | Purpose | Requirements |
|---|---|---|
| Provisioning network | PXE boot and IPA communication during enrollment and deployment | DHCP server, TFTP/HTTP for PXE, routed to Ironic Conductor |
| Management network | Out-of-band BMC access (IPMI/Redfish) | Isolated VLAN, reachable from Ironic Conductor only |
| Tenant network | Production traffic after provisioning | Standard Xloud networking — assigned post-deployment |
Troubleshooting
Node stuck in 'enroll' state after creation
Node stuck in 'enroll' state after creation
Cause: Ironic has not yet validated the BMC credentials — the node must be
explicitly transitioned to If this fails with a driver error, verify BMC connectivity:Check
manageable.Resolution:Transition to manageable
Validate driver interfaces
power interface result — False indicates unreachable BMC.Introspection fails or times out
Introspection fails or times out
Cause: The node did not PXE-boot into the IPA image, or the IPA image could not
reach the Ironic Conductor over the provisioning network.Resolution:
- Verify the node’s NIC MAC address is registered:
openstack baremetal port list --node <uuid> - Confirm the provisioning DHCP server is serving the correct PXE configuration
- Check Ironic Conductor logs:
journalctl -u ironic-conductor -f - Verify IPA can reach Ironic API: the IPA image needs HTTP access to the callback URL
Provisioning fails with 'cleaning failed'
Provisioning fails with 'cleaning failed'
Cause: The automated disk cleaning step (shredding previous data) failed, often
due to disk detection errors in the IPA environment.Resolution:For test environments, disable cleaning to skip disk wiping:
Check node error message
Disable automated cleaning
Node shows correct provision_state but never boots OS
Node shows correct provision_state but never boots OS
Cause: The deploy image was written to the wrong disk device, or the boot loader
was not installed correctly.Resolution:
Check IPA logs in the Ironic Conductor:Verify the correct root device hint is set if the server has multiple disks:
View conductor logs for deployment errors
Set root device hint
Next Steps
Compute Architecture
Understand how Ironic integrates with the Xloud Compute scheduler for bare metal placement
Ansible Integration
Automate post-provision OS configuration on newly deployed bare metal nodes
Compute Hosts
Manage hypervisor and bare metal hosts in the compute resource pool
Security Hardening
Apply security hardening to bare metal nodes after provisioning