We are excited to announce the latest release of RackHD Machine Driver v0.2.0, which allows users to manage Docker hosts through RackHD. With the first version, the Machine Driver allowed a user to configure Docker on a RackHD node that already had an Operating System (OS) installed. With this new release, a RackHD workflow can be applied to the node at provision time, allowing for OS installs. Additionally, a user no longer has to specify a RackHD node to use; rather, they can specify a SKU and the Driver will automatically pick a node for you. Let’s break down why this is important.
Most Docker Machine drivers target cloud-based and/or virtualized infrastructure. You use Docker Machine to say “give me a Docker instance running on AWS”. If Amazon isn’t your cloud provider of choice, you can use Rackspace, Google, Digital Ocean, etc. A key component of cloud infrastructure is always this ability to say “give me a machine” and specifically not caring about where the machine is physically (ignoring things like availability zones for now). You also don’t know it’s IP address in advance. You do choose what machine characteristics you need, such as CPU, RAM, disk space, and an OS.
Contrast this with working with bare-metal servers in your own data center. It’s not uncommon for each node to have a hard-coded IP address, often related to its position in a rack or row. When you want to use a node, you often need to know which node you are using so you can look up its IP address. Or perhaps a group of nodes is assigned to you and you are told “these are your machines, and these are their IP addresses”. If that node breaks, a technician has to go to that exact server and try to fix it, rather than just deleting it (and ceasing to pay for it) and creating a new one.
RackHD helps ease this burden by centrally managing resources in an automated way. RackHD can handle IP address assignment and takes on the task of OS installation. Advanced workflows can be written to perform tasks based on data collected from the machine itself, such as installing a specific OS on all servers from a specific manufacturer. The way this is done with RackHD is the concept of a SKU. This is a set of rules to categorize a machine based on information gathered during discovery. When a node is first discovered by RackHD, data is collected from sources such as dmi, lshw, lspci, IPMI, ohai, etc. You may not know what these are, but the results end up in catalogs that you can use to access fine-grained details about the motherboard, processor, manufacturer, firmware versions, etc. You then define rulesets to categorize a machine into a SKU. Examples would be “nodes with an Intel chipset go in a SKU named ‘Intel'”, or “nodes with a BMC and an AMD processor go in a SKU named ‘docker'”. Perhaps you see where this is going now.
With the latest RackHD Machine Driver you can now consume bare-metal resources in much the same way you consume cloud-based ones. If you set up appropriate SKU logic in RackHD to give you a pool of nodes that are available for use with Docker, you can use Docker Machine to grab one and configure it. You don’t have to care which physical node you are grabbing, you merely specify the SKU much like specifying a machine type from your cloud provider. If the nodes in your SKU don’t already have an OS on them (part of your SKU logic could be to automatically install CoreOS on a node in the SKU, for example), you can give Machine Driver the name of the RackHD workflow to install the OS of your choice, such as Ubuntu.
We think this opens a whole new model of consumption for bare-metal resources. With the rise of private and hybrid cloud, more people are trying to efficiently use their private, local resources rather than reaching out to the cloud. But the cloud is convenient! The combination of RackHD and the RackHD Machine Driver work toward making the use of bare-metal resources every bit as convenient as on-demand cloud-based infrastructure.