Foreman vs SaltStack

Posted by UpGuard

logos_fore

The configuration management (CM) stage is seeing a lively assortment of players as of late. Fueled by the zeitgeist of DevOps, tools are experiencing growing pains and/or maturing into full-fledged commercial enterprise offerings, for better or worse. Some are slowly encroaching on others’ territory; many are going head-to-head. Others have a more nebulous arrangement-- they may work together but also sport competing features. Foreman and SaltStack is an example of the latter.

Find out how the two stack up against each other, bearing in mind that there is no “one-size-fits-all” solution. As the following comparison will show, both are competent CM tools; the value gained from each ultimately depends on the organization and use case at hand.

Foreman

Known as a “complete server life cycle management tool,” Foreman arrived on the scene over 4 years ago and is supported by community-driven popularity and momentum. The open source project’s Github repository is actively maintained by a core team and supported by a legion of community volunteers and contributors. Foreman is also used in Linux distributions such as RDO and RHOS (Red Hat OpenStack distribution)-- two freely-available, community-supported distributions of OpenStack.

 

The Foreman UI. Image courtesy of theforeman.org

Whereas CM tools like SaltStack focus on the installation/configuration of software, users, and network interfaces, Foreman can handle initial OS installations on bare metal. It can then in turn be used with tools like SaltStack or Puppet for automation, and have them report back with system facts. In this sense, Foreman is true to its name: its strengths are overseeing and managing the big picture, leaving pieces like automation to the tools that do it best.

Plugin Power

Foreman was written in Ruby and can be extended through the creation of plugins (also written in Ruby). Additionally, a plethora of freely available plugins exists to add further functionality to the tool. For example, the Discovery plugin enables Foreman to identify new machines on the network based on their MAC addresses. Plugins are easy to install--  they’re implemented as Rails engines and packaged as gems.

Smart Proxy Architecture

The heart of Foreman’s easy integration capabilities is its Smart Proxy Architecture, which provides a RESTful API for hooking into and extending various subsystems like Puppet, Chef, or SaltStack. Smart Proxy components reside on or near machines that perform specific functions and facilitate Foreman’s orchestration efforts. Out-of-the-box, Smart Proxies support DHCP, DNS, TFTP, as well as connectivity to tools like Puppet and Chef.

Foreman’s Smart Proxy Architecture. Image courtesy of theforeman.org

SaltStack

SaltStack is having a great run lately. Their open source project is currently one of the biggest and most active on GitHub. Last year they won InfoWorld’s Technology of the Year Award. And thanks to them, “Salted” has entered the IT vernacular-- as in, “our infrastructure is heavily Salted.”  

Halite-- SaltStack’s GUI. Image courtesy of SaltStack.

SaltStack actually exists in two forms-- an open source project and a commercial offering. The solution is an infrastructure management, orchestration and CM tool known for its easy installation, scalability, and remote execution capabilities. It’s written in Python and stores configurations and setups in YAML output files known as “states” and base configurations called “pillars.” Agents called “minions” are controlled by a master server and deployed to target nodes to be managed. Of course, using agents versus an agentless setup has its drawbacks-- read this to learn more.

ZeroMQ Data Bus

SaltStack is known for its speed and scalability, due mostly to its high-performance architecture powered by the lightweight ZeroMQ messaging library. ZeroMQ facilitates transport and deployment and acts as a concurrency framework, creating persistent TCP connections between the Salt master and its minions. This persistent data pipe is what gives SaltStack considerable performance advantages over competing solutions.

Enterprise Focused

SaltStack has made considerable efforts to bolster enterprise adoption of its tool. Clearly this initiative has been paying off: LinkedIn, Comcast, Rackspace, and NASA are among some of its marquee customers. A drawback to this, however, is that SaltStack is presumably on the hook to deliver more enterprise-centric features to address the needs of its large enterprise customer base.

Side-By-Side

 

Foreman

SaltStack

Ease of Setup

Medium difficulty.

Easy, especially when compared to competing solutions.

Language(s)

Built with Ruby. Uses YAML for configuration settings.

Built with Python. Uses YAML for its configuration descriptions.

Integration/API

REST API; out-of-the-box support for DHCP, DNS, TFTP, Puppet, Puppet CA,Chef Proxy, and Realm.

REST API; integrations with Amazon AWS, Windows Azure, Rackspace, among others.

Support / Community

Active community and contributor base.

Enterprise support available; active community and contributor base.

GUI

Web-based management console.

Halite, written in Angular.js.

Modularity/Extensibility

Plugins in the form of Ruby Gems. Large free plugin library for extending functionality on Github.

Modules written in Python. Primary modules separated into six groups: Execution modules, State modules, Grains, Renderer modules, Returners, and Runners.

OS Support

Targets primarily Linux servers for management. Reportedly works with Windows.

Linux/Unix, WIndows, and Mac OS.


Front lines often blur when vendors stride between interoperability and being competitive. Foreman, for instance, is often mentioned in tandem with Puppet, as the two are integrated tightly and therefore commonly used together. Furthermore, some vendors like SaltStack are making a concerted effort to chase the mighty enterprise dollar, while other projects like Foreman choose to remain non-commercial, continuing to develop the core offering and leaving the bells and whistles to the community.

In short, tools will emerge to fill out specific, integral parts of the DevOps toolchain. Foreman is uniquely designed to be, well-- the foreman. The tool excels in its orchestration capabilities and ability to interface with many subsystems through its REST API. SaltStack is a competent CM and automation platform in its own right.

 

Source(s):

http://blog.smartbear.com/devops/a-taste-of-salt-like-puppet-except-it-doesnt-suck/

http://www.opencredo.com/2013/01/10/a-dive-into-salt-stack/

http://saltstack.com/saltstack-named-infoword-2014-technology-of-the-year-award-winner/

http://www.infoq.com/news/2014/08/lyft-moves-to-saltstack

http://www.admin-magazine.com/Archive/2013/14/Life-cycle-management-with-Foreman-and-Puppet

https://blog.codecentric.de/en/2014/04/foreman-complete-lifecycle-management-tool/

http://www.theforeman.org/manuals/1.5/index.html

UpGuard customers