Bare Metal provisioning with Plunder


I’ve been wanting to announce this for a while, but between my poor quality code, poor quality documentation and getting it “greenlit” by $employer it has just been developed quietly in the background. There is still a long way to go, but the project has reached a state that i’m happy with..

Welcome Plunder..

The name is pretty terrible, but given the original purpose of this was to automate the deployment of Docker Swarm and Kubernetes on bare-metal I opted for something that at least had a nautical theme to it.

The main purpose for creating this was:

  • Simplify the tooling
  • Ease setting up the environment
  • Ease automation
  • Add an abstraction layer (API) to ease higher level tooling interaction with bare-metal

For getting plunder up and running please follow the quickstart guide

Origin Story

As with most open source projects the project stems from having to help people get things deployed on bare-metal platforms and thinking “How can things be this bad … still”. From challanges getting all of the constituent parts up and running to having to script various bits in a vain attempt to ease and automate it struck me how fragmented and terri-bad things still were.

I also looked at some of the new alternative newer tooling but issues in air-gapped environments to just how complex the initial set up was also put me off. Not to say that my attempt is much better, but the aim has always been to around making things quick and simple.


The plunder project has a number of sub-projects that all extend the functionality:


The plunder sub-project contains the API-driven deployment server that exposes all of the services required in order to deploy Operating Systems and platforms onto bare-metal servers.


pldrctl is the CLI that interacts with plunder over a network connection, allowing remote administrators to manage deployments on remote servers. The pldrctl tool also allows remote execution on newly deployed servers along with collecting logs of deployments.


The Cluster API provider implementation that allows a Kubernetes cluster to deploy additional (or guest) Kubernetes clusters on bare-metal. For details of using the cluster-api-plunder provider please follow the details here =>


The cappctl tool is used to seed the first Kubernetes server in a brand new environment, it would typically be used to deploy the the master kubernetes cluster that the Cluster-api provider would then be deployed upon for all guest cluster deployments.

Future plans

There is no concrete roadmap for Plunder at this current point, mainly a list of goals as I attempt to mature the project.

  • Move the CLI pldrctl to having a release
  • Refactor the deployment engine plunder to improve logging output
  • Finalise the kickstart configuration in plunder
  • Extend functionality in the cluster-api-plunder provider
  • Grow the community…

Get involved

The blog that details the usage of plunder is available here =>

If you’re facing any problems then please raise issues or feel free to reach out to me on twitter

Have fun deploying !

Bare Metal provisioning with Plunder
Posted on
December 15, 2019
Licensed under