Lars Noldan and I worked on building Tinderbox for use at Six Feet Up as our FedEx Day Project. Tinderbox is a product used to simplify and speed up the administration of software running on the FreeBSD operating system by automating the building FreeBSD packages. FreeBSD is the preferred operating system for the servers that we manage at Six Feet Up. Building packages can be quite time consuming for us, so using a product like Tinderbox can help reduce the time spent waiting for packages to be built.
What's a port/package?
Ports hold all the source code for “software” that can be compiled to run on FreeBSD. Ports are built into packages that are “ready to install” versions of the software. Packages are created for the architecture of machine to deploy on (64 bit, 32 bit, etc) and the version of OS (FreeBSD 8.1….)
Default Setup in FreeBSD
Traditionally, we might install all software by using ports on each server. Each machine can have its own copy of ports. Previously, we improved this by mounting one copy of the ports tree from one server onto each server. The disadvantage of this solution is building ports on each server is redundant. Also, using a shared ports tree means we cannot a deploy newer versions of software easily without quickly running into into dependency problems.
Tinderbox is an automated port building system which removes the manual work of building ports into packages. It can easily maintain copies of ports for each FreeBSD version and allows upgrade of the port tree to newer versions while maintaining older versions. It also comes with a "Queue" which allows ports to be queued up to be built.
The installation and testing of this product was pretty straightforward. We found the Web interface to be useful for monitoring what packages are being built and their status. We are not sure if we will use the other parts of the web interface.
What Are The Advantages of Using Tinderbox?
Tinderbox provides the ability to set up "builds" based on a specific OS, Architecture, and Ports Tree. This functionality allows for an upgrade of a Ports Tree as frequently as necessary, and rebuilds all the packages and dependencies without affecting previous builds. When deploying new servers, it will now simply require mounting the appropriate Tinderbox build and installing all of our software via packages (versus compiling ports). This method saves hours of compile time per server deployed.
A FreeBSD community contributor, Tom Judge, has been working on a CFEngine/Role based package management system. This system integrates CFEngine configuration management with Tinderbox's package management to quickly deploy new servers based on role almost automatically. The impact of Tom's work on our environment might be the single biggest thing to happen to our internal operations.
More information on:
Do you use Tinderbox or have you found an alternative package building platform for FreeBSD? Any tips or questions on deploying a package system?