At the moment, Ironic uses exactly the same deployment ramdisk as the Nova baremetal driver does. The current deploy model exposes a hard drive via iSCSI. The conductor driver then mounts this volume and writes an OS image to it.
We believe that a deployment ramdisk should be able to do more than just expose an iSCSI volume. This ramdisk should have direct access to the hardware, and be able to:
- Erase disks
- Partition disks
- Install bootloaders
- Install an OS image
- Update firmware
- Configure RAID
- And more...
Ironic-python-agent allows this functionality to be exposed to Ironic.
What is it?
- The agent is a small python application that is meant to be embedded in a ramdisk.
- The target machine boots this ramdisk, which starts the agent process.
- The agent then exposes a REST API that Ironic uses to interact with the agent.
- The API calls pluggable backends to interact with the machine.
The REST API will expose a set of fine-grained commands, such as "wipe disk" and "write image". The REST API will also expose an endpoint to send a list of commands to be run asynchronously. The agent will register as being on a given node, and get that node's UUID, on startup, by POSTing to the Ironic API The agent will heartbeat to Ironic on a given interval. All functionality, with the exception of the heartbeater and API, should be fully pluggable.
Preliminary list of backends available:
- Hardware (can handle both inventory and manipulation)
- Provisioning (bootloader/imaging/configdrive)
- This could maybe be split into separate drivers, but is not yet necessary.
- Workflows - there are two pieces to this:
- "Canned" workflows: A single endpoint that runs multiple tasks, defined by the driver. Example: a "deploy" endpoint.
- Arbitrary workflows: A single endpoint that runs an arbitrary list of multiple tasks.
The Ironic conductor will run a driver corresponding to this agent. This driver will live in the Ironic tree as an official driver. This driver may eventually be merged into Ironic's PXE driver - it will depend how much is common between the two.