The roots

In the beginning of 2008 the leading polish shared website hosting provider Home.pl started a promotion, during which they gave each new customer up to 100 .PL domains completely for free. We registered a huge number of such domains and run many different applications on them (mostly domain sale offers, but not only), on different platforms (external VPS for domain sale offers and other small things, and internal server in NAT-ed LAN for some bigger application), and soon it showed up that we definitely need something to manage all of that.

A management solution was written in PHP and while it managed external services, like Google AdSense, it was only able to generate Apache vhost files - but not to physically overwrite the production ones, neither restart Apache - since it ran on unprivileged account.

Next, a few simple shell helper-scripts were written to check if vhosts list that should be generated by PHP part really exist (in case of missed out PHP errors), move them to /etc/apache2 directory and restart Apache. That was the exact beginning of Server Farmer.

Evolution

Since that moment, many new functionalities were implemented as purely shell scripts, without PHP parts, eg. the whole SNMP monitoring configuration, or MTA configuration. And a few initial shell scripts slowly evolved into well-structured directory tree with subdirectories per each OS, each host, standardized file names and many configuration aspects etc.

A bit later Debian Lenny (5.0) was released. That shortly resulted in splitting our platforms into Debian Etch (4.0) and Lenny (5.0), and additionally for Ubuntu 9.04, which we started to use for development - with similar, but different configurations for each OS.

Between 2009 and 2015 Server Farmer were used to automate numerous development, testing and production services, being more and more mature, but also more and more overloaded with code specific to individual customers, just like in the most closed source software.

Going official

In the meantime, we started managing a number of Linux-based Oracle Database instances and invested many working hours just to make Server Farmer 100% compatible with Oracle Database from 10g to then-upcoming 12c.

At the end of 2014 a decision has been made to extract the core Server Farmer code and templates, and release it as open source, thus allowing others to use it for free. The initial open source commit was made in March 2015.

In late 2015 another decision has been made, to split Server Farmer into very light core part, and a set of extensions moved to individual repositories, thus:

  • allowing porting individual repositories to support new OS versions, just when needed/required
  • preventing github forks to be outdated (since forked core still pull/clone original up-to-date repositories, and only the minimal work is done by the core itself)

Now

In 2016, Server Farmer has over 8 years of history of managing, production servers (which is longer than in competing Chef framework), including over 1.5 year of being successful open source project. It was used to manage the infrastructure for over 100 customers, which consisted of:

  • over 400 physical/virtual servers and containers, located in multiple data centers, in almost 10 major cities in Poland, and at least 2 cities in Germany
  • over 60 cloud instances hosted by Amazon Web Services, Microsoft Azure and Rackspace Cloud, physically located across the whole world