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.
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.
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.
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.
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.”
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.
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.
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.