OpenStack Ironic — System Architecture

OpenStack Ironic — System Architecture An architecture diagram generated by Archify. Bare metal CLI · openstack baremetal ... · Standalone mode — Ironic alone, no other OpenStack services Bare metal CLI openstack baremetal ... Bifrost / Metal3 · standalone consumers · Standalone mode — Ironic alone, no other OpenStack services Bifrost / Metal3 standalone consumers Nova Compute · ironic virt driver · Full OpenStack mode — optional integrations Nova Compute ironic virt driver Keystone · tokens · RBAC policy · Full OpenStack mode — optional integrations Keystone tokens · RBAC policy Glance + Swift · images · temp URLs · Full OpenStack mode — optional integrations · or plain HTTP / OCI Glance + Swift images · temp URLs or plain HTTP / OCI Neutron · ports · DHCP · VLANs · Full OpenStack mode — optional integrations Neutron ports · DHCP · VLANs ironic-api · WSGI · REST /v1 · microversions · Control plane — stateless API + shared state · stateless — scale horizontally ironic-api WSGI · REST /v1 · microversions stateless — scale horizontally Ironic database · nodes · ports · conductors · Control plane — stateless API + shared state · the single source of truth Ironic database nodes · ports · conductors the single source of truth oslo.messaging · RabbitMQ · topic ironic.conductor · Control plane — stateless API + shared state · or rpc_transport = json-rpc oslo.messaging RabbitMQ · topic ironic.conductor or rpc_transport = json-rpc ironic-conductor · conductor_group: default · Conductor layer — every node is owned by exactly one conductor ironic-conductor conductor_group: default Hash ring · node.uuid → conductor · Conductor layer — every node is owned by exactly one conductor · rebuilt from heartbeats Hash ring node.uuid → conductor rebuilt from heartbeats ironic-conductor · conductor_group: rack-a · Conductor layer — every node is owned by exactly one conductor ironic-conductor conductor_group: rack-a Out-of-band interfaces · power · management · bios · raid · Hardware interface layer — a hardware type composes one driver per interface Out-of-band interfaces power · management · bios · raid In-band interfaces · deploy · inspect · clean · rescue · Hardware interface layer — a hardware type composes one driver per interface In-band interfaces deploy · inspect · clean · rescue Network interface · flat · neutron · noop · Hardware interface layer — a hardware type composes one driver per interface Network interface flat · neutron · noop BMC · Redfish 443 · IPMI 623 · Data centre — management network + provisioning network BMC Redfish 443 · IPMI 623 Bare metal node · runs the IPA ramdisk · Data centre — management network + provisioning network · the thing being provisioned Bare metal node runs the IPA ramdisk the thing being provisioned PXE / iPXE + HTTP · TFTP · dnsmasq · conductor httpd · Data centre — management network + provisioning network PXE / iPXE + HTTP TFTP · dnsmasq · conductor httpd REST /v1 no Keystone virt driver → REST token · RBAC reads node rows RPC: do_node_deploy topic: conductor.<host> node lock: reservation node.uuid → host image + checksum out-of-band calls in-band via IPA port + DHCP setup port binding Redfish / IPMI agent API + heartbeat DHCP opts power · boot device iPXE → ramdisk Standalone mode — Ironic alone, no other OpenStack services Full OpenStack mode — optional integrations Control plane — stateless API + shared state Conductor layer — every node is owned by exactly one conductor Hardware interface layer — a hardware type composes one driver per interface Data centre — management network + provisioning network Legend Frontend Backend Database Cloud Security Message bus External

Walkthrough 1/2 — request to ramdisk

  • • 1. You PUT target=active. You never touch the machine.
  • • 2. Keystone checks your token (skipped in standalone mode).
  • • 3. The API reads the node row. It never talks to hardware.
  • • 4. The hash ring names the one conductor that owns this node.
  • • 5. That conductor locks the node via the reservation column.
  • • 6. It loads the hardware type and its composed interfaces.

Walkthrough 2/2 — ramdisk to active

  • • 7. Out-of-band: BMC sets boot to network and powers on.
  • • 8. The network interface programs DHCP for the booting node.
  • • 9. iPXE chainloads; the IPA ramdisk boots into memory.
  • • 10. In-band: IPA heartbeats, conductor drives deploy steps.
  • • 11. The agent writes the image; boot device flips to disk.
  • • 12. Lock released. The node reaches active.

What first-time readers get wrong

  • • power_state = is it on. provision_state = where is it in its life.
  • • reservation is the conductor holding the lock, not a state.
  • • out-of-band works powered off; in-band needs the ramdisk booted.
  • • a hardware type is a bundle of interfaces, not a driver.