Tinkerballa is a minimal Vagrant-based PXE server that plays nice on your network.
Shell Ruby
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Tinkerballa is a minimal Vagrant-based PXE server that plays nice on your network. It can be used to bootstrap Ubuntu 12.04 onto bare-metal servers on your network.

Getting Started

The basic steps to get Tinkerballa up and running are:

bundle install
vagrant up

NOTE: bundle install is only there to ensure you have vagrant installed. If it's already installed globally, you may omit that step and simple run vagrant up.

How does it work?

Tinkerballa uses dnsmasq and a simple python http server to provide a fully automated PXE server.

Some of the finer points:

  • A complete PXE server needs DHCP/PXE, TFTP, and HTTP services. dnsmasq provides everything but HTTP, which is handled by pythons's SimpleHTTPServer.
  • dnsmasq is configured to use ProxyDHCP, which means it will handle only PXE requests and will forward on normal DHCP requests to your normal DHCP server. For that reason, it plays nice on your network and doesn't interfere with a pre-existing DHCP setup (though maybe it will interfere with another PXE server). In fact, Tinkerballa configures it's own IP via DHCP.
  • It lives in a VM in your box, but uses bridged networking, so it has an IP that is peer level with the machine it's running on. Your network won't know it's a VM.
  • It contains a fully automated Ubuntu 12.04 installation package, with all the sensible defaults set via a preseed.cfg file.
  • It leaves a default sudo-powered account called "ubuntu" with password "ubuntu", on a newly bootstrapped server. sudo will not be configured to be passwordless.
  • It configures that account for remote passwordless ssh login via keys you provide (default keys will be autogenerated, but are replaceable).
  • To change the keys it gives to new servers, replace the auto-generated files "www/insecure_default_key" and "www/insecure_default_key.pub" with keys of your choice.
  • To extend the post-install behaviour, simply edit the file "www/post-install.sh"