Server Farmer is a lightweight framework designed for companies, that manage many servers and services belonging to many different customers, but connected into a single managed platform.
As of 2020, Server Farmer has over 12 years of history of managing production servers (which is longer than in competing Chef framework), including over 5 years of being successful open source project. It was used to manage the infrastructure for over 200 customers, consisted of over 1000 physical/virtual servers and containers, located in multiple data centers, in almost 10 major cities in Poland, at least 2 cities in Germany, and over 500 cloud instances hosted by Amazon Web Services, Microsoft Azure, Google Cloud Platform, Hetzner Cloud and Rackspace Cloud, physically located across the whole world.
You can find a lot more information at http://serverfarmer.org/ project page and in extension repositories:
If you have any technical or non-technical questions about Server Farmer, for which you can't find an answer on the project home page, feel free to write to [email protected]. We will try either to respond you directly, or publish an answer on the page, or directly fix any reported issues.
No matter if you manage just a single server, or hundreds of them, installing Server Farmer gives you many advantages over default OS configuration:
The main difference between Server Farmer and the competitive tools (mostly Puppet, Chef, Ansible, Salt and CFEngine) is that Server Farmer is designed to manage a completely heterogeneous environment, where servers:
To achieve that, Server Farmer is mainly focused on low-level server security aspects, and doesn't try to cover the application level at all. As opposite, most mentioned tools mentioned tools focus mainly on the application level, providing more-or-less complete "Infrastructure As Code" frameworks.
Most server management tools (Puppet, Chef etc.) are designed with corporate mindset ("where the money is"), and follow "one managed application/customer - one instance" model, which is suitable mainly for big companies, with lots of servers and big applications. Such model is however obviously too expensive for companies that have 1-5 servers overall.
As opposite to that model, Server Farmer is built from ground up to manage many customers, applications etc. using only one instance shared across all customers, which is much cheaper, in both technical resources (servers, repositories etc.), and man-hours.
Server Farmer basic configuration can be set up just in a few minutes and then extended, when your server farm is growing. You can also implement your own functional extensions (just like Ansible playbooks or Chef recipes, but much more simple), that will cover completely new functionalities - or you can use Server Farmer with Ansible, whichever better fits your needs.
Server Farmer consists of over 80 Git repositories. But don't worry, you will
need to fork only 2 of them (this one and
sf-keys), and start with editing
small files in
After forking, clone this repository to
/opt/farm directory on your server:
git clone https://github.com/your-github-login/serverfarmer /opt/farm
setup.sh script and just follow the simple on-screen instructions:
Server Farmer uses Polynimbus
multi-cloud infrastructure management tool to launch and manage cloud instances,
sm-farm-provisioning extension to provision them.
git clone https://github.com/polynimbus/polynimbus /opt/polynimbus /opt/polynimbus/install.sh /opt/polynimbus/api/v1/account/setup.sh aws myaccount
Launch new cloud instance:
/opt/polynimbus/api/v1/instance/launch.sh aws myaccount test_key1 m5.xlarge
Install Server Farmer on new instance:
sf-provision ec2-54-123-45-67.compute-1.amazonaws.com /etc/polynimbus/ssh/id_aws_test_key1 test_profile
List cloud instances:
/opt/polynimbus/api/v1/instance/list.sh aws myaccount
The below list contains only distribution versions with 100% compatibility. If your OS is not on this list, but is any Debian/RHEL derivative, Server Farmer will most probably support it at least partially.
RHEL and direct clones:
specialized RHEL clones:
We are welcome to contributions of any kind: bug fixes, added code comments, support for new operating system versions or hardware etc.
If you want to contribute:
|Author:||Tomasz Klim ([email protected])|
|Copyright:||Copyright 2008-2020 Tomasz Klim|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.