Ironic
Overview - Ironc
OpenStack Ironic is a bare metal as a service deployment tool.
I used pxe+ssh, as it virtualizes bare-metal deployment for testing purposes, so only one machine is needed. The machine should have 16GB+ of RAM. This is because it will install other OpenStack services for integration, such as Glance, Nova, etc. Please see the developer documentation and how to get started.
Interaction flow
- Nova contacts Ironic to allocate an Ironic node providing the image to boot
- Ironic pulls the image from Glance and stores it on the local hard disk
- Ironic boots a virtual machine via SSH with a PXE-enabled seabios BIOS
- The seabios code asks Ironic’s tftpserver for a deploy ramdisk and kernel
- The deployed node starts the deploy kernel and ramdisk
- The deploy ramdisk does the following:
- Starts tgtd to present the root device as an iSCSI disk on the network
- Contacts the Ironic ReST API to initiate iSCSI transfer of the image
- Waits on port 10000 for a network connection to indicate the iSCSI transfer is complete
- Reboots the node once port 10000 has been opened and closed by a process
- Once the deploy ramdisk contacts Ironic to initiate iSCSI transfer of the image ... Ironic does the following:
- uses iscsiadm to connect to the ISCSI target on the deploy hardware
- spawns several dd processes to copy the local disk image to the iSCSI target
- Once the dd processes exit successfully, Ironic contacts port 10000 on the deploy node
- Ironic changes the PXEboot configuration to point to the user’s actual desired ramdisk and kernel
- The deploy node reboots into seabios again
- The node boots the proper ramdisk and kernel, which load the disk image that was written via iSCSI
Overview - Ironic Standalone
To install Ironic as standalone, there are at least two approaches available:
- Ansible-Ironic-standalone; https://github.com/jriguera/ansible-ironic-standalone
- Bifrost; https://github.com/openstack/bifrost
They are both based on a set of Ansible scripts to setup an environment in which Ironic can be used for bare-metal deployments.
This means that none of the other OpenStack components are used; such as Nova, Glance, etc. Nginx is used in this case to serve the images. And dnsmasq is comfigured to handle the DHCP/BOOTP requests, and points to the relevant location for a node.
Bifrost, for instance, currently uses Ansible to setup a source based deployment of these components. While Ansible-Ironic-Standalone uses RDO packages to accomplish the same. However, the latter project allows for a finegrained deployment of components if some of them already exists in your environment.
Both of these tools have a higher success rate when deployed on Ubuntu than CentOS. (Related to how development is done).