As discussed in my last update on QuintupleO, the biggest blocker for getting that working was a way to allow Ironic to control OpenStack instances. Since then I have been made aware of the pyghmi project, which provides a way to implement IPMI interfaces that do arbitrary things on the back end. It currently includes a couple of examples in its bin directory for noop and virsh implementations. I've written an OpenStack version.
So far it only implements the pieces I needed to do an Ironic deployment, and assumes the instance it's controlling was created with a PXE-bootable flavor as discussed in my previous QuintupleO update. With that and the small Nova and Neutron changes (also in the previous update) I was able to do a full baremetal-style deployment to OpenStack instances using Ironic. It actually imitates a real baremetal deploy better because you're using the regular ipmitool driver in Ironic instead of pxe_ssh.
Some Notes on my environment:
openstackbmc --os-user admin --os-password password --os-tenant admin --os-auth-url http://11.1.1.12:5000/v2.0 --instance baremetal_0
While this should make QuintupleO a viable option for private clouds where you can hack up Nova and Neutron, we still need to get this functionality into the projects themselves in a way that integrates better. I would also like to look into automating the deployment of these environments - using Heat to deploy the baremetal/bmc pairs would be cool, and could make this much easier to scale.
So that's the state of the QuintupleO art today. I've had a few people contact me about it since my last update and hopefully this will be useful. If you want to chat more about it, my contact information is on the About page.
Edit: Here's my nodes json file for registering the Ironic nodes:
{ "nodes": [ { "pm_type": "pxe_ipmitool", "mac": [ "fa:16:3e:2a:0e:36" ], "cpu": "2", "memory": "4096", "disk": "40", "arch": "x86_64", "pm_user": "admin", "pm_password": "password", "pm_addr": "10.0.0.8" }, { "pm_type": "pxe_ipmitool", "mac": [ "fa:16:3e:da:39:c9" ], "cpu": "2", "memory": "4096", "disk": "40", "arch": "x86_64", "pm_user": "admin", "pm_password": "password", "pm_addr": "10.0.0.15" }, { "pm_type": "pxe_ipmitool", "mac": [ "fa:16:3e:51:9b:68" ], "cpu": "2", "memory": "4096", "disk": "40", "arch": "x86_64", "pm_user": "admin", "pm_password": "password", "pm_addr": "10.0.0.16" } ] }