As more and more enterprises adopt a “cloud-like” infrastructure, a shift in work culture and practices — known as DevOps — is also occurring. According to Puppet’s 2016 State of DevOps report, the number of people working in DevOps teams has increased from 16 percent in 2014 to 22 percent in 2016.
That said, it’s difficult to give a true definition of DevOps because the market dynamics are changing along with the emergence of new technologies, and the term is still evolving. It may not be easy to define DevOps, but it’s quite easy to pinpoint some of the core focus areas of the DevOps movement, including automation, continuous integration, continuous deployment, and, of course, collaboration between development and operations.
Given the diversity of organizations building their IT infrastructure, it’s hard to find one project or tool that does it all. Different projects may seem to be doing the same thing but are actually trying to solve different problems. As usual, there can be some overlapping of functionality, but, diversity is the beauty of open source, and the basic idea behind all these projects is to assist DevOps pros in doing their jobs more accurately and efficiently.
I spoke with some industry players to learn about the open source DevOps projects they like or use. What follows is a handpicked list of such projects. Please bear in mind this is not a comprehensive list of all DevOps projects out there, but those often cited as essential to DevOps teams.
The participants included: Sam Guckenheimer, Product Owner and Group Product Planner at Microsoft; Mike Fiedler, Director of Technical Operations at Datadog; Thomas Hatch, SaltStack CTO; Amit Nayar, VP of Engineering at Media Temple; Amar Kapadia, Senior Director, Product Marketing at Mirantis; Jason Hand, DevOps Evangelist and Incident & Alerting specialist at VictorOps; and Greg Bruno, VP Engineering, Co-Founder at StackIQ.
Without further ado, here are the top seven DevOps projects mentioned by these experts:
Chef is a powerful configuration management tool to automate the process of configuring, deploying and managing applications across a network. Chef does this through repeatable scripts that they aptly call “recipes” and “cookbooks” that bring these recipes together as pluggable configuration modules. Chef works across platforms including AWS, Google Cloud Platform, OpenStack, IBM SoftLayer, Microsoft Azure, Rackspace, etc. Users of Chef include Facebook, Disney, Airbnb, and Mozilla.
Puppet is a popular DevOps project that competes with Chef. Puppet Enterprise is an automation software that automates the provisioning, configuration, and management of servers, networks and storage devices. Puppet is used by CERN, Wikimedia, Mozilla, Reddit, Oracle, and PayPal.
Ansible is simpler IT automation software. According to its GitHub page, “Ansible handles configuration management, application deployment, cloud provisioning, ad hoc task-execution, and multinode orchestration — including trivializing things like zero downtime rolling updates with load balancers.” Ansible offers an agentless approach (which means all you need is an SSH shell or APIs), eliminating the needs of third-party software. Ansible was recently acquired by Red Hat and is seen as Red Hat’s answer to Puppet and Chef, giving the company their own tool for the stack. Recently Ansible gained the capability to also automate network infrastructure using SSH and APIs.
SaltStack (Salt) competes with all three products mentioned above. Salt treats infrastructure as code and automates the management and configuration of any infrastructure or application at scale. Thomas Hatch, founder of SaltStack, said, “SaltStack software is used for data-driven, intelligent orchestration of converged infrastructure at scale and to configure the most complex application environments. SaltStack also offers support subscriptions and professional services SaltStack Enterprise customer and Salt Open users.”
Container technology has been around for quite some time, but Docker popularized it to an extent that it has sort of become a revolution. Go to any Linux conference these days, and you’ll hear container talk everywhere. Docker allowed developers to package, ship, and run any application as a lightweight container that can easily move across platforms. Docker containers are hardware and platform agnostic, which means you can run them anywhere — from your dirt cheap laptop to your monstrous mainframe.
“Docker, and containerization in general, is going to significantly change how DevOps teams work. Containers will be the new package format, and the CI/CD pipelines will change accordingly,” said Guckenheimer.
Kubernetes is a great example of a big company turning a byproduct of their operations into a product. Kubernetes is what Google internally uses to manage a cluster of containers spread across multiple nodes. As a container management solution, Kubernetes enables DevOps by controlling containerized applications across nodes. It provides a very efficient mechanism to deploy, maintain, and scale applications.
The widely-known Jenkins project is a continuous integration tool that automates the integration of the commits made to the current code base into the mainline. It’s widely used for building new projects, for running tests for detecting bugs, for code analysis, and then for deployment.
This is very short list of projects in the DevOps space; many other projects are available, with each one catering to a certain use case. What’s most impressive is that all of these projects are fully open sourced. It’s more or less become a phenomenon. The success of the Linux development model has made even hard-core proprietary companies comfortable with the idea of open sourcing such projects.
When you talk about the DevOps movement, open source is the de facto development model. It has become so commonplace that no one even really mentions it. We have started to take it for granted that “it has to be open source.”