Wayfinder open sourced!

I got involved in a final project at Wayfinder Systems after we got permission to release a majority of our source code as open source. We’ve spent the last months cleaning up code and writing documentation and now it has finally been released! Have a look at the blog post over on the Wayfinder OSS site for more details. In the released code you will find our location based server platform and map & navigation clients for the major mobile platforms.
Vodafone has also published a press release!

I spent most of my time cleaning up and documenting the operations aspect of the server, and this includes releasing a lot of tools and scripts that we used for operating the Wayfinder server clusters but are generic tools. The two most interesting ones are WFConf; a minimal but still powerful Configuration Management tool (but I still recommend Puppet if you want to start using a CM tool) and a web based network kickstart file generator.  WFConf is documented here, and if you’re interested go ahead and look at it in the repository here. There you’ll find the less documented kickstart files as well and there is some sparse documentation you can have a look at.  The kickstart stuff is quite easy to use. You start out with a normal kickstart file and then you cut out the sections you need to vary across different servers and put the snippets  in separate files. You then create new nippets for different configurations, typically things like root passwords, disk partitioning, the post section etc. When you PXE boot your server the kickstart file is fetched from a Perl CGI which looks in a config file to determine which snippets to include for this particular server and pastes them into a complete file which is returned. In the config file you setup defaults and then specify the individual snippet configuration based on the ethernet address of the server. Here’s what it might look like:

%ks_ethers = (
   # defaults
   'default' => {
      'grubfix'      => 'nop',
      'rootpw'       => 'example',
      'partitioning' => 'one_disk_sda',
   },
   # mgmt1
   '00:aa:bb:cc:dd:ee'   => {
      'partitioning' => 'md_raid1_sda_sdb',
      'grubfix'      => 'md_raid1_sda_sdb',
   },
   # node1
   '00:aa:bb:cc:dd:ef'   => {
   },
   # node2
   '00:aa:bb:cc:dd:f0'   => {
   },
);

Combine this with a configuration management tool that setups all of your services and you can have a server with a specific configuration and role re-installed and ready to run in less than 10 minutes