Managing Sets of Servers - Ubuntu as a Server - Ubuntu Unleashed 2017 Edition (2017)

Ubuntu Unleashed 2017 Edition (2017)

Part IV: Ubuntu as a Server

Chapter 36. Managing Sets of Servers

In This Chapter

Image Juju

Image Puppet

Image Chef

Image CFEngine

Image Ansible

Image Landscape

Image References

This chapter provides a quick introduction to some tools that might be useful, especially for people who manage large numbers of servers. The tools here are designed for system administrators and developers—people who are responsible for keeping more than one or two servers up and running, managing their configurations, and so on. Systems have grown to the point that managing each one individually is becoming unwieldy at times and so tools have been created that decrease some of the stress and complexity by reducing the job to managing the software that in turn manages all of the servers. Okay, any system administrator or developer will tell you that this is a bit of an oversimplification, but it is close.

Because this is such a complex task, one on which many thick books are written, we just provide a quick overview of some of the options you should consider and then leave you the task of further research. Some of these options have entire books just to themselves, but if you are someone who needs to manage sets of servers, you will want to do it right. Do your research. This chapter helps you get started with a quick description of some of the things that are being used on Ubuntu to assist with this task.


One entry that would fit well into this chapter, juju, is instead covered in Chapter 35, “Ubuntu in the Cloud,” because it is so closely tied with Ubuntu’s cloud server. It includes for free many of the features of other software’s paid enterprise versions and is well worth a look. This chapter became quite short when we moved the information on Juju to Chapter 35, “Ubuntu in the Cloud.”


Puppet is a configuration management tool written in Ruby. It is designed to make it easier to deploy servers and scale applications across a network and does so using a custom declarative language. It has both open-source and commercial (closed-source) versions.

Puppet does four basic things. First, it provides a place for you define the desired state for your infrastructure’s configuration. Second, Puppet simulates changes before enforcing them. Third, Puppet enforces the desired state automatically, making corrections for drifting configurations. Finally, Puppet gives you a report on the differences between the actual and desired states before you make any changes.

A site called Puppet Forge (listed in Resources) provides access to downloadable modules, which are bits of Puppet code for automating tasks, such as setting up a specific type of server. Instructions there are also available for creating and sharing your own modules.

Much of the power of Puppet is made available in its for-payment Enterprise version, which also includes a nice GUI. The open-source version will work with Amazon EC2 for provisioning, will manage configurations for operating systems and applications, lets you use Puppet modules from Puppet Forge, and has community support via the Web. If you need anything more than this, either find a different product or pay for it to use Puppet’s enterprise version, which has a good reputation for maturity and usefulness.

Puppet Labs, the company that develops Puppet, recently bought Cloudsmith (, a company that makes developer tools based on Puppet. This development is sure to make Puppet an even stronger contender in the market.


Chef is a configuration management tool, also written in Ruby. It uses a services-oriented architecture to help automate tasks. For Chef, you write recipes that describe how you want your server or a specific server software to be configured, such as an HTTP server or database server. The recipes describe each resource, such as services that should be running or packages that should be installed, and the state in which each should be found. It then makes sure that configuration is maintained or updated across all servers being managed.

Chef is open source. However, to really use it you must pay for a hosted version (called Hosted) or a standalone version (called Private) that you can install inside your corporate firewall with a service contract. Downloading the source code and getting it up and running is not a trivial task, and support for the open-source version (called Open Source) without a service contract is limited. That said, like Puppet, Chef is mature and well respected and worth your time if you need what it offers.


CFEngine is probably the oldest option for automating infrastructure. It is written in C, so it might be a little faster than the other options. It manages server builds, deployment, and management, and it performs some very useful audits and reports. Some really big names are known to use CFEngine, such as AT&T, IBM, Pixar, and Qualcomm.

CFEngine has open-source and enterprise versions. The differences are a little less extreme than with some of the other options, but again, the enterprise version has all the flashy chrome and a few really useful features that make it worth the expenditure for most users who need or want the added benefits they offer.


Ansible is an orchestration engine. It does configuration management, application deployment, and more. It is a proprietary product that runs on Linux and is receiving a bit of buzz lately. It claims easy use and the ability to manage devices without having to install special software on those devices.


Landscape is an enterprise-focused systems management and monitoring tool that is available from Canonical. It is a part of the Ubuntu Advantage program (, which is a paid service. You can run landscape as a hosted service from Canonical’s Ubuntu Advantage, or you can install it locally. It can monitor both local servers as well as cloud servers, such as are discussed in Chapter 35, “Ubuntu in the Cloud.”


Image—The official website for Puppet.

Image—The official website for Puppet Forge.

Image—The official website for Chef.

Image—The official website for CFEngine.

Image—The official website for Ansible.

Image—The official website for Landscape and Ubuntu Advantage.

Image—The official Ubuntu server guide.