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 2 different platforms (external VPS for domain sale offers and other small things, and internal, NAT-ed virtual server for some bigger applications).

We quickly wrote a management solution in PHP, and while it managed external services, like Google AdSense, it was only able to generate Apache vhost files content - but not to physically overwrite the actual files, neither restart Apache - since it ran on unprivileged account.

Next, we wrote a simple shell script to check, if vhosts list generated by PHP part is not empty (in case of missed out PHP errors), move it to /etc/apache2 directory and restart Apache. That was the exact beginning of "Server Farmer", which was named after the /opt/farm directory, which in turn was named after the giant SEO link farm, that generated the most revenue at that time.

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.

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.

Open Source

At the end of 2014 a decision has been made to release the core Server Farmer 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 adding new OS support per repository (easier and more flexible)
  • allowing Github forks of the main repository to be outdated without negative consequences to users (since all business logic is in separate repositories anyway)

To the end of 2017, Server Farmer became just the minimal environment to install and run its extensions, and 100% of business logic was moved to over 60 extensions.

Now

In 2018, Server Farmer has over 10 years of history of managing, production servers (which is longer than eg. for Chef framework), including 3 years of being successful open source project. It was used to manage the infrastructure for over 160 customers, which consisted of:

  • over 650 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 140 cloud instances hosted by Amazon Web Services, Microsoft Azure and Rackspace Cloud, physically located across the whole world