Skip to content

Conversation

@andrrax
Copy link
Contributor

@andrrax andrrax commented Jan 7, 2026

This adds an optional (default false) firmware update step to the enroll-server workflow which:

  1. Gets list of server traits matching "^CUSTOM_FIRMWARE_UPDATE_"
  2. For each trait found, execute an ironic runbook with a matching name, in a clean step

The potential node traits should be defined as inspection rules, which will be applied during the node inspection which runs prior to this firmware update step.

@andrrax andrrax force-pushed the enroll-server-fw-update branch 3 times, most recently from 00eb0f4 to a8292c8 Compare January 7, 2026 18:21
@andrrax andrrax requested review from cardoe and stevekeay and removed request for cardoe January 7, 2026 18:21
@stevekeay
Copy link
Contributor

Refresh my memory, how do we manage the creation of the runbook itself?

@andrrax
Copy link
Contributor Author

andrrax commented Jan 7, 2026

Refresh my memory, how do we manage the creation of the runbook itself?

As of now they're created by hand. Given a firmware-update-R740xd.yaml file like:

---
- interface: firmware
  step: update
  args:
    settings:
      - url: "http://<host_address>/media/DriversFirmware/Dell_Updates/remote_update/Current/FOLDER12857402M/1/iDRAC-with-Lifecycle-Controller_Firmware_RVDDR_WN64_7.00.00.181_A00.EXE"
        component: "bmc"
        wait: 900
      - url: "http://<host_address>/media/DriversFirmware/Dell_Updates/remote_update/Current/FOLDER12557577M/1/BIOS_J6D53_WN64_2.23.0.EXE"
        component: "bios"
  order: 1

The runbook would be created like this:

openstack baremetal runbook create --name CUSTOM_FIRMWARE_UPDATE_R740XD --steps firmware-update-R740xd.yaml

I am open to suggestions on how we could keep the yaml in a repo, and have the runbooks sync'd via argo in some fashion.

@andrrax andrrax force-pushed the enroll-server-fw-update branch from a8292c8 to cfac3e5 Compare January 8, 2026 15:19
@andrrax
Copy link
Contributor Author

andrrax commented Jan 15, 2026

Refresh my memory, how do we manage the creation of the runbook itself?

As of now they're created by hand. Given a firmware-update-R740xd.yaml file like:

---
- interface: firmware
  step: update
  args:
    settings:
      - url: "http://<host_address>/media/DriversFirmware/Dell_Updates/remote_update/Current/FOLDER12857402M/1/iDRAC-with-Lifecycle-Controller_Firmware_RVDDR_WN64_7.00.00.181_A00.EXE"
        component: "bmc"
        wait: 900
      - url: "http://<host_address>/media/DriversFirmware/Dell_Updates/remote_update/Current/FOLDER12557577M/1/BIOS_J6D53_WN64_2.23.0.EXE"
        component: "bios"
  order: 1

The runbook would be created like this:

openstack baremetal runbook create --name CUSTOM_FIRMWARE_UPDATE_R740XD --steps firmware-update-R740xd.yaml

I am open to suggestions on how we could keep the yaml in a repo, and have the runbooks sync'd via argo in some fashion.

I have created an operator and runbook CRD to handle this in #1605

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants