21 open source DevOps tools (and what they do)

A bird’s eye view of the landscape of open source DevOps tools, and what they actually do.

Sometimes, it seems like there are a million different tools in DevOps. You can barely go a day without stumbling across a new tool that you need to know. But which are the biggest and most popular tools out there? Which are worth spending your time on? We’re here to help you, with this rundown.

We’ve put together this guide to 20 open source DevOps tools, so you can start learning, or so you can understand what people are talking about at work. These DevOps tools are well-known in I.T., and they’ve been adopted by thousands of organizations. So keep reading to find out about some of the most popular DevOps tools out there.

If you’re already working in the DevOps or SRE field, you’re probably already using some of these tools, but you might learn something new in this list.

These open source DevOps tools are completely free to download and try. If you want to start learning, just download them and run either on your laptop or in the cloud.

So let’s take a closer look at some open source DevOps tools.

If you want some projects to exercise your skills, check out our DevOps Project Ideas article, which will give you some inspiration for homework projects you can try.


🔹 Build and packaging tools

First let’s take a look at some tools for building and packaging software. These tools help you build or share code.

A build tool helps you package an application into a format which is ready to deploy onto a server, or into the cloud. More and more people are using containers as a packaging format, and Docker helps with that.

Also included in this category are tools which help you to share libraries and packages.

Git

Git is a tool for managing, sharing and tracking changes in source code files.

Illustration of Git and GitHub
Initial release 2005
License GPL v2.0
Download link Download (for Mac/Windows/Linux), or install on Linux via your package manager
Source code https://github.com/git/git

Of all of these DevOps tools, Git is probably the most well-known and widely-used, so it makes sense for us to start our list here!

Git is a tool for storing and tracking changes in code. It started life as a tool to help Linux developers manage the Linux source code1. But it since grew to much more than that. It’s the de facto way to store code. Over 93% of developers use Git2.

On Linux, install the git package, and you can start working with Git right away at the command line. Or, on Windows, you can install Git for Windows. There are also lots of graphical Git tools, the most popular is

RECOMMENDED: A Git branching strategy for microservices

What can you do with Git?

  • You can store code (in something called a repository). You can “rewind” your code to a previous version, and show the differences between versions – and do this all entirely on your local computer.

  • You can create repositories to manage your many different software projects independently of each other.

  • When you’re ready to share code with others, you can share your Git repository, including all of its history, on a Linux server.

  • It’s even easier to share your code with others if you use an online Git repository hosting service, like GitHub, GitLab or Bitbucket.

Docker

Docker is a toolkit for building and running software in containers.

Illustration of Docker and Docker Hub
Initial release 2013
Backed by Docker, Inc.
License Apache 2.0
Download link Docker Desktop (for Windows/Mac desktops), Docker Engine (for Linux)
Source code https://github.com/moby/moby

You can use Docker to run applications in containers, build your own Docker container images, or find and download images that have been published by other people.

On your desktop, the best way to get started is to install Docker Desktop. Or on a server, you can install Docker Engine.

We’ve got a guide to containers if you want to understand more about containers and what they do!

What types of things can you do with Docker?

  • As a desktop user
 you can use one of Docker’s tools (like Docker Desktop) to run applications that have been packaged into container form. There are thousands of container images available in Docker Hub.

  • As a developer, you can use Docker to build a container image for your own application, and share the image with others.

  • As a server administrator, you can use Docker to run applications in containers, whether that’s apps from your developers, or third-party apps like MySQL.

Packer

Packer lets you create virtual machine images from code.

Initial release June 2013
Backed by Hashicorp, Inc.
Written in Go
License Mozilla Public Licence 2.0
Download link https://www.packer.io/downloads
Source code https://github.com/hashicorp/packer

Packer helps you to follow the DevOps practice of “infrastructure-as-code” when you’re working with virtual machines. Traditionally, it hasn’t been so easy to create virtual machine images, because it involved some manual work, or pointing-and-clicking. That’s not easily repeatable.

With Packer, you can create virtual machine images repeatably by writing scripts.

Packer is also extensible through plugins. You can use a variety of provisioners to configure your virtual machines, like PowerShell or Ansible. And you can use a variety of builders to package your virtual machine into one of many formats, like Amazon EC2 or VirtualBox.

What types of things can you do with Packer?

  • You can create a custom virtual machine image, containing an operating system, and all of the software that you want, installed and configured with code.

  • Once you’ve created your image with Packer, you can upload it to your cloud provider, and use it to create new virtual machines. Packer supports many of the image formats used by the cloud providers, like AWS’s AMI format.

  • You might use Packer to create so-called golden images, which are virtual machine images that are customised for your company’s environment. They might have a certain configuration, or some security patches installed. Publishing and using golden images is often used to enforce standards within an organisation.

For a good technical introduction to Packer, check out Sarasa Gunawardhana’s blog on faun.pub.

Sonatype Nexus

Nexus is an artifact repository (or ‘artefact’ if you’re a Brit!).

Also known as Nexus, Nexus3, Nexus Repository OSS
Initial release 2008
Backed by Sonatype, Inc.
License Eclipse Public Licence 1.0
Download link https://www.sonatype.com/products/nexus-repository
Source code https://github.com/sonatype/nexus-public

Jfrog Artifactory

Artifactory is an artifact repository.

It’s very similar to Nexus: it’s a bucket for storing software packages that are consumed or produced by your applications.

Also known as Artifactory, Artifactory OSS, Jfrog
Initial release Some time before 2010
Backed by Jfrog, Ltd.
License GNU Affero General Public License
Download link https://jfrog.com/community/download-artifactory-oss/
Source code https://releases.jfrog.io/artifactory/bintray-artifactory/org/artifactory/oss/jfrog-artifactory-oss/

đŸŽș Application orchestration

These tools are designed to help you run applications, keep them up and running, and scale them up when you need to handle more load.

Kubernetes

Kubernetes is an orchestration tool for managing your applications running in containers.

Illustration of Kubernetes
Also known as Kubernetes, K8s
Initial release June 2014
Supported by Google, Cloud Native Computing Foundation, plus many commercial vendors like Red Hat, IBM
Written in Go
License Apache License 2.0
Download link https://kubernetes.io/releases/download/
Source code https://github.com/kubernetes/kubernetes

As well as plain old “vanilla” Kubernetes, there are other distributions available. OKD is a distribution of Kubernetes which comes with extra features and DevOps tooling.

Nomad

Nomad is a tool for managing your applications, whether they run in containers or not.

Nomad can start and run instances of your applications on a cluster of servers.

Initial release September 2015
Backed by Hashicorp, Inc.
License Mozilla Public Licence 2.0
Written in Go, JavaScript
License Apache License 2.0
Download link https://www.nomadproject.io/
Source code https://github.com/hashicorp/nomad

Docker Swarm

Docker Swarm is a tool for managing Docker containers running on a cluster of servers.

Initial release 2014
Backed by Docker, Inc.
License Apache 2.0
Written in Go
Download link https://docs.docker.com/get-docker/
Source code https://github.com/moby/swarmkit

🏗 Infrastructure automation

These tools are designed to automate the work involved in setting up infrastructure – this means things like servers, firewalls, network components, and so on.

Terraform

Terraform is a tool for creating and managing cloud resources with code.

Initial release 2014
Backed by Hashicorp, Inc.
License Mozilla Public Licence 2.0
Written in Go
Download link https://www.terraform.io/downloads
Source code https://github.com/hashicorp/terraform

Ansible

Ansible is a tool for automatic configuration of infrastructure - e.g. installing packages, configuring web servers, creating user accounts, and so on.

Initial release 2012
Backed by Red Hat
License GPL 3.0
Written in Python
Installation instructions https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
Source code https://github.com/ansible/ansible

RECOMMENDED: How to run an Ansible playbook

Pulumi

Pulumi is a tool for creating and managing infrastructure in the cloud.

To create infrastructure with Pulumi, you use the Pulumi API for your preferred programming language – available for Python, Go, JavaScript and C# – and Pulumi creates your services in the cloud for you.

Initial release 2019
Backed by Independent start-up
License Apache 2.0 License
Written in Go (+ others)
Installation instructions https://www.pulumi.com/docs/get-started/install/
Source code https://github.com/pulumi/pulumi

⛳ CI/CD

GitLab

GitLab is a tool for managing application source code and automating the build and release of your application.

GitLab’s built-in CI/CD feature lets you create workflows to build, test and deploy your applications.

Initial release October 2011
Backed by Independent start-up
License MIT
Written in Ruby, JavaScript
Installation instructions https://about.gitlab.com/install/
Source code https://gitlab.com/gitlab-org/gitlab

Jenkins

Jenkins is an automation server for running software build and testing jobs, and much more.

Jenkins is a bit of a stalwart and has a mixed following. (Some people love it, some people hate it!)

Initial release February 2011, a fork of the Hudson project from 2005
Backed by CloudBees
License MIT
Written in Java
Download link https://www.jenkins.io/download/
Source code https://github.com/jenkinsci/jenkins

Tekton

Tekton is a tool for running pipelines inside Kubernetes.

With Tekton, you can create CI/CD pipelines on Kubernetes, to build, test and deploy your apps.

Initial release 2018
Backed by Google, Red Hat
License Apache 2.0
Written in Go
Download link https://tekton.dev/
Source code https://github.com/tektoncd

Argo CD

Argo CD is a continuous delivery tool for Kubernetes, which uses the principle of GitOps.

GitOps is the principle of using Git as the single source of truth for application deployment information, and ensuring that the state of a cluster is the same as the state which is defined in Git.

Initial release 2018
Supported by Red Hat, used in Red Hat OpenShift GitOps
License Apache 2.0
Written in Go
Download link https://argoproj.github.io/cd/
Source code https://github.com/argoproj/argo-cd

🛂 Testing & quality

These tools help to run tests against your software, and ensure its quality.

Sonarqube

Sonarqube is a code-quality checking tool.

Initial release 2007
Backed by SonarSource S.A
License LGPL 2.0
Written in Java
Download link https://www.sonarqube.org/downloads/
Source code https://github.com/SonarSource/sonarqube

Selenium

Selenium is a browser automation tool. It’s used to simulate interactions with websites, fetch information, and perform tests.

Initial release 2004
Backed by Software Freedom Conservancy (non-profit)
License Apache 2.0
Written in Java, C#, JavaScript & others
Download link https://www.selenium.dev/downloads/
Source code https://github.com/SeleniumHQ/selenium

Cypress

Cypress is a testing tool for anything that runs in a browser.

With Cypress, you can write and run end-to-end tests for your web applications.

Initial release ~2015
Backed by Independent
License MIT
Download link https://on.cypress.io/installing-cypress
Source code https://github.com/cypress-io/cypress

📈 Logging & monitoring

Prometheus

Prometheus is a monitoring and alerting toolkit.

Initial release November 2012
Supported by Cloud Native Computing Foundation, initially developed at SoundCloud
License Apache 2.0
Written in Go
Download link https://prometheus.io/download/
Source code https://github.com/prometheus/prometheus

Prometheus consists of a time-series database and some tools to collect metrics from applications or servers.

Grafana

Grafana is a dashboarding tool. It’s often used to show system and application stats, to make it easier to visualise what’s happening in a system.

Initial release 2014
Backed by Grafana Labs
License AGPL 3.0
Written in TypeScript, Go
Download link https://grafana.com/get/
Source code https://github.com/grafana/grafana

Grafana lets you create visual dashboards to display data stored in different places. It supports lots of different types of data stores, from metrics tools like Prometheus, to databases like Postgresql.

Grafana runs on a server, and you create and view dashboards using any web browser.

What types of things can you do with Grafana?

Elasticsearch

Elasticsearch is a search engine which is usually used to analyse log files and other huge archives of data.

Initial release February 2010
Backed by Elasticsearch B.V.
License Server Side Public License
Written in Java
Download link https://www.elastic.co/downloads/elasticsearch
Source code https://github.com/elastic/elasticsearch

Elasticsearch is often combined with Logstash and Kibana to gather logs from servers and applications, and produce dashboards. When these three tools are used together, it’s known as “the ELK stack”.

Elasticsearch is based on the Apache Lucene library.

Wrapping up

We’ve only scratched the surface of the huge and growing landscape of DevOps tools here today – but we had to stop somewhere, otherwise we were going to run out of bandwidth!

We’ve tried to include a range of different types of tools, from the tools used to build software and package it, to running and orchestrating apps at scale, monitoring and beyond. These projects all have strong communities, and are used in many hundreds of organisations around the world, so be sure to check them out when you get a chance!

Happy DevOpsing!

  1. A Short History of Git. git-scm.com. Retrieved 2022-07-08. ↩

  2. Stack Overflow Developer Survey. Stack Overflow. 2022. ↩

Tom Donohue

By Tom Donohue, Editor | Twitter | LinkedIn

Tom is the founder of Tutorial Works. He’s an engineer and open source advocate. He uses the blog as a vehicle for sharing tutorials, writing about technology and talking about himself in the third person. His very first computer was an Acorn Electron.

Join the discussion

Got some thoughts on what you've just read? Want to know what other people think? Or is there anything technically wrong with the article? (We'd love to know so that we can correct it!) Join the conversation and leave a comment.

Comments are moderated.