Skip to content

Commit 772a005

Browse files
configure http-ipxe boot interface
1 parent 650bfaa commit 772a005

File tree

5 files changed

+144
-35
lines changed

5 files changed

+144
-35
lines changed
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
# Runbook: Configure Dell Node Boot Interface (HTTP/iPXE)
2+
3+
**Goal:** Ensure Dell baremetal nodes are configured to boot with `http-ipxe` (with PXE fallback enabled).
4+
**Applies To:** Dell nodes managed via OpenStack Ironic.
5+
6+
## TL;DR
7+
8+
```bash
9+
openstack baremetal node manage <NODE>
10+
openstack baremetal node clean --clean-steps dell-boot-config.yaml <NODE>
11+
openstack baremetal node set --boot-interface http-ipxe <NODE>
12+
openstack baremetal node provide <NODE>
13+
```
14+
15+
---
16+
17+
## Step 1: Put node into manageable state
18+
19+
```bash
20+
openstack baremetal node manage <NODE>
21+
```
22+
23+
---
24+
25+
## Step 2: Apply BIOS configuration
26+
27+
Save `dell-boot-config.yaml`:
28+
29+
```yaml
30+
---
31+
- interface: bios
32+
step: apply_configuration
33+
args:
34+
settings:
35+
- name: PxeDev1EnDis
36+
value: Enabled
37+
- name: PxeDev1Interface
38+
value: NIC.Slot.1-1
39+
- name: HttpDev1EnDis
40+
value: Enabled
41+
- name: HttpDev1Interface
42+
value: NIC.Slot.1-1
43+
- name: HttpDev1TlsMode
44+
value: None
45+
- name: TimeZone
46+
value: UTC
47+
order: 1
48+
```
49+
50+
Run cleaning with the runbook:
51+
52+
```bash
53+
openstack baremetal node clean \
54+
--clean-steps dell-boot-config.yaml \
55+
<NODE>
56+
```
57+
58+
---
59+
60+
## Step 3: Monitor Cleaning Progress
61+
62+
```bash
63+
openstack baremetal node show <NODE> -f value -c provision_state
64+
```
65+
66+
Check the provision state until it returns to `manageable`:
67+
68+
Expected transitions:
69+
70+
- `cleaning`
71+
- `clean wait`
72+
- `manageable`
73+
74+
---
75+
76+
- If provision_state is `clean failed`: check the error
77+
78+
```bash
79+
openstack baremetal node show <NODE> -f value -c last_error
80+
```
81+
82+
---
83+
84+
## Step 4: Switch node to HTTP iPXE boot
85+
86+
```bash
87+
openstack baremetal node set --boot-interface http-ipxe <NODE>
88+
```
89+
90+
---
91+
92+
## Step 5: Provide the node (make it available)
93+
94+
```bash
95+
openstack baremetal node provide <NODE>
96+
```
97+
98+
---
99+
100+
### (Optional) We can also use runbooks for Cleaning & Servicing
101+
102+
For detailed information, refer to the official OpenStack Ironic runbooks documentation:
103+
[OpenStack Ironic Runbooks](https://docs.openstack.org/ironic/latest/admin/runbooks.html/)
104+
105+
To run these commands [baremetal Standalone Command-Line Interface (CLI)](https://docs.openstack.org/python-ironicclient/latest/cli/standalone.html) is required
106+
107+
### Check for Existing Runbooks
108+
109+
Before creating a new runbook, verify if it already exists:
110+
111+
```bash
112+
baremetal runbook list
113+
```
114+
115+
### Create a New Runbook
116+
117+
```bash
118+
baremetal runbook create \
119+
--name CUSTOM_PXE_INTERFACE_CONFIG \
120+
--steps scripts/runbooks/bios_pxe_interface_config.yaml
121+
```
122+
123+
[scripts/runbooks/bios_pxe_interface_config.yaml](https://raw.githubusercontent.com/rackerlabs/understack/refs/heads/main/scripts/runbooks/bios_pxe_interface_config.yaml)
124+
125+
### Using a Runbook
126+
127+
```bash
128+
# Using a runbook name
129+
baremetal node clean --runbook CUSTOM_PXE_INTERFACE_CONFIG node-0
130+
131+
# Or using a runbook UUID
132+
baremetal node clean --runbook 8aba8375-a08b-4e89-9bae-291a8aa100b0 node-0
133+
```
134+
135+
---

docs/operator-guide/openstack-ironic-inspection-guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ This command tells Ironic to boot the node into the inspection environment and g
3232

3333
### Argo Workflow Integration
3434

35-
Our Argo [enroll-server](https://workflows.dev.undercloud.rackspace.net/workflow-templates/argo-events/enroll-server) workflow already runs Redfish inspection.
35+
Our Argo [enroll-server](https://github.com/rackerlabs/understack/blob/05b7fb1a8ab9efd3b2f6544b5c62874ed39a3de5/workflows/argo-events/workflowtemplates/enroll-server.yaml#L41) workflow already runs Redfish inspection.
3636
Therefore, just running `openstack baremetal node inventory save` is enough to retrieve the inspection data.
3737

3838
---

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ nav:
150150
- 'OpenStack':
151151
- operator-guide/openstack-ironic.md
152152
- operator-guide/openstack-ironic-inspection-guide.md
153+
- operator-guide/openstack-ironic-change-boot-interface.md
153154
- operator-guide/openstack-neutron.md
154155
- operator-guide/openstack-placement.md
155156
- 'Networking':

scripts/runbooks/README.md

Lines changed: 0 additions & 34 deletions
This file was deleted.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
---
2+
# Runbook Name: Dell Boot Interface Reconfiguration
3+
# Purpose: Ensure Dell baremetal nodes boot via HTTP (http-ipxe) with fallback PXE enabled.
24

35
- interface: bios
46
step: apply_configuration
57
args:
68
settings:
9+
# Enable PXE boot on NIC 1-1
710
- name: PxeDev1EnDis
811
value: Enabled
912
- name: PxeDev1Interface
1013
value: NIC.Slot.1-1
14+
15+
# Enable HTTP boot on NIC 1-1
1116
- name: HttpDev1EnDis
1217
value: Enabled
1318
- name: HttpDev1Interface
1419
value: NIC.Slot.1-1
1520
- name: HttpDev1TlsMode
1621
value: None
22+
23+
# Set timezone to UTC
1724
- name: TimeZone
1825
value: UTC
1926
order: 1

0 commit comments

Comments
 (0)