Top 10 Open Source Tools for DevOps

0
1563
devops

Every now and then, it is time to take an inventory of the tools that developers use in software development. DevOps as a culture has come to stay. This article looks at the top ten tools being used for DevOps today, as viewed by its author.

DevOps is a culture, and succeeds in an environment that is tools-agnostic. DevOps is about people, processes and tools but not in isolation from either of these. All tools provide pretty similar kinds of features and functionalities. It is all up to the organisation and its culture to ensure the tool fits into its requirements. The ten best tools being used for DevOps today (in my view) are briefly described in this article.

Git
Git is a free and open source distributed version control system created by Linus Torvalds in 2005. It facilitates the management of all sizes of projects efficiently and with speed. Though the learning curve is very easy in Git, it can be difficult to put in best practices considering the existing culture of an organisation and the mindset of its employees.

Git characteristics
Open source Yes
Licence GNU General Public License Version 2
Type Distributed version control system
Written in language(s) C, Shell, Perl, Tcl, Python
Operating system supported POSIT (Linux, macOS, Solaris, AIX), Windows
Stable release 2.30.0
Website https://git-scm.com/
Companies and projects that use Git Google, Facebook, Microsoft, Twitter, LinkedIn, Netflix, PostgreSQL, Eclipse

 

A few important Git commands
Description Command
Set a user name git config –global user.name “Mitesh Soni”
Set email address git config –global user.email “xxxxxxxxx@xxxxx.com”
Initialise a Git repository git init
Clone a repository git clone https://github.com/xxxxxxxx/Angular9786-DevOps
To verify the status of files in a repository git status
Add files in the current directory for commit operation git add
Commit files git commit -m “First commit in the repository”
List branches git branch
Switch a branch git checkout
Create a new branch git branch new-branchname
Merge current branch with target branch git merge target-branch
Show all commits git log
Save modified and staged changes git stash
Fetch and merge any commits from the remote branch git pull

It is still challenging to write commit messages in Git. This creates chaos if best practices are not followed and can become complicated over time.

Jenkins
Jenkins provides a simple way to create a pipeline that includes continuous integration and continuous delivery. It offers integration with the tools used in application life cycle management to automate all activities, starting from build to testing and deployment.

Jenkins characteristics
Open source Yes
Licence MIT License
Type DevOps practices implementation, automation server, orchestration tool
Written in language(s) Java
Operating system supported All
Stable release 2.269
Website https://www.jenkins.io
Companies and projects that use Jenkins CloudBees, Cloudera, Dell, GitHub, NASA, Netflix, Sony, SpaceX

Jenkins arguably supports all languages, as it provides plugin based architecture. In case plugins are not available, CLI or command execution helps to set up continuous practices. Organisations can write their plugins to integrate internal tools with Jenkins.

Figure 1: Jenkins Blue Ocean

Jenkins 2.0 and later versions have built-in support for delivery pipelines.

A few important Jenkins commands
Description Command
Restart Jenkins http://localhost:8080/jenkins/restart
Shut down Jenkins http://localhost:8080/jenkins/exit
Start Jenkins  java -jar jenkins.war
Change the port java -jar jenkins.war –httpPort=9999

Blue Ocean is becoming very popular in creating declarative pipelines; however, YAML pipelines are being incubated and the community is looking forward to these.

Docker
A container can package application code, libraries and configurations. The container engine is installed on the host OS.

Docker characteristics
Open source Yes
Licence Apache License 2.0
Type OS-level virtualisation, containers
Written in language(s) Go
Operating system supported Linux, Windows, macOS
Stable release 19.03.14
Website https://hub.docker.com/
Companies and projects that use Docker Trivago, Pinterest, Twitter, Spotify, Microsoft, Medium.com, Coursera

Docker comes in two flavours — Docker Community Edition and Docker Enterprise Edition.

A few important Docker commands
Description Command
Log in to the registry docker login
To build an image from the Docker file docker build -t sampleapp :1.0
List all the images docker images
Delete an image docker rmi imagename
Create a container docker run –name containerName dockerImage
Pull an image from the registry docker pull imageName
Push an image docker push imagename:tag
Clean an unused image docker image prune

 

Figure 2: Dockerhub

Docker creates, deploys and manages containers on a different host operating system using such resource isolation features as cgroups and Linux kernels.

Kubernetes
Kubernetes or k8s is an open source, extensible and portable container orchestration platform. It offers declarative configurations and automation for deployment.

Kubernetes characteristics
Open source Yes
Licence Apache License 2.0
Type Container orchestration and management
Written in language(s) Go
Operating system supported Linux
Stable release 1.20
Website https://kubernetes.io/
Companies and projects that use Kubernetes Adidas, Booking.com, Box, Bose, IBM, Nokia, Pearson, Wink, WikiMedia, AppDirect, Spotify

It has become one of the most popular tools in DevOps practices due to its features with respect to deployment, management and scaling applications in Kubernetes clusters.

A few important Kubernetes commands
Description Command
Get Kubectl version kubectl version
Get details on Kubernetes cluster kubectl cluster-info
Get details about a node kubectl describe nodeName
Get details about a pod kubectl describe podName
List of all pods kubectl get pods
List of all services kubectl get services
List of all deployments kubectl get deployments

 

Figure 3: Kubernetes dashboard

We can create Kubernetes clusters in an on-premise environment and in different cloud deployment models such as private and public cloud. Public cloud provides managed services for Kubernetes. AWS has Amazon Elastic Kubernetes Service (EKS) while Azure has Azure Kubernetes Service (AKS) for managing Kubernetes clusters in a cloud environment.

Terraform
Terraform is an open source ‘Infrastructure as Code’ tool, created by HashiCorp. It helps us to create immutable infrastructure to avoid the problem of configuration drift.

Terraform characteristics
Open source Yes
Licence Mozilla Public License  v2.0
Type Infrastructure as code
Written in language(s) Go
Operating system supported  Linux, FreeBSD, macOS, OpenBSD, Solaris, and Microsoft Windows
Stable release 0.14.2
Website https://www.terraform.io/
Companies and projects that use Terraform Slack, Uber, Twitch, Intuit, CircleCI, Lime

 

A few important Terraform commands
Description Command
Verify Terraform version terraform –version
Install Terraform modules terraform init terraform init -input=false
Check configuration and create plan terraform plan
Execute the plan terraform apply terraform apply -auto-approve
Delete all resources terraform destroy terraform plan –destroy
Validate/check the syntax of the Terraform files terraform validate

Terraform is a platform-agnostic declarative coding tool, and helps developers to use a high level configuration language to manage infrastructure. It supports different cloud providers and their services such as AWS, Azure, and so on.

Ansible

Ansible is an open source IT automation/configuration management tool that provides cross-platform support. It is easy to use and offers security and reliability when adopted in an organisation. Ansible is also popular for rolling updates in release management activities.

Ansible characteristics
Open source Yes
Licence Proprietary / GNU General Public License
Type Configuration management
Written in language(s) Python, PowerShell, Shell, Ruby
Operating system supported Linux, UNIX-like, MacOS, Windows
Stable release 2.10.2
Website https://www.ansible.com/
Companies and projects that use Ansible Atlassian, AWS, Azure, VMware, Google Cloud Platform, Cisco

Ansible is different from other popular configuration management tools because it is agentless. It can be integrated with Kerberos, LDAP, and other authentication management systems.

Selenium
Continuous testing helps to verify the functional aspects of an application in an automated manner and keeps it production-ready after all verifications. Selenium is the most popular automated functional testing tool that many organisations utilise effectively for Web automation.

Selenium characteristics
Open source Yes
Licence Apache License 2.0
Type Automation testing
Written in language(s) Selenium Server: Java; Selenium WebDriver (works without Selenium Server), official support: JavaScript (Node.js), Python, Ruby, Java or C#
Operating system supported Cross-platform
Stable release 3.141.59
Website https://www.selenium.dev/
Companies and projects that use Selenium  Trivago, Cred, HubSpot, OLX Group

 

A few important Selenium commands
Description Command
Browser initialisation WebDriver driver = new FirefoxDriver();
WebDriver driver = new ChromeDriver();
WebDriver driver = new InternetExplorerDriver();
Desired capabilities DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability(“browserName”, “browser”); caps.setCapability(“browserVersion”, “version””); caps.setCapability(“platformName”, “platform”);

WebDriver driver = new ChromeDriver(caps);

 

Selenium is extremely popular for application functional testing in an automated manner.

ELK Stack
ELK is the popular acronym for three open source projects:

  • Elasticsearch: Search and analytics engine built with RESTful APIs
  • Logstash: Server-side data processing pipeline that collects data inputs and provides these to Elasticsearch
  • Kibana: Visualisation of data with charts and graphs
ELK Stack characteristics
Open source Yes
Licence Apache License  2.0
Type Logging, search and index
Written in language(s)
 Java
Operating system supported  Cross-platform
Website https://www.elastic.co/
Companies and projects that use ELK Stack k Netflix Overflow, LinkedIn

ELK Stack is more popular in Kubernetes environments, where you can utilise it for effective logging mechanisms in Kubernetes clusters installed and configured in cloud environments such as AWS and Azure.

Nagios
Nagios is an open source monitoring tool with a client-server architecture. It is relatively scalable, manageable and secure, and comes with an informative dashboard, log and database system.

Nagios characteristics
Open source Yes
Licence GPLv2
Type Monitoring
Written in language(s) C
Operating system supported Cross-platform
Stable release 4.4.6
Website https://www.nagios.org/
Companies and projects
that use Nagios
Airbnb, Cisco, PayPal
Figure 4: Monitoring in Nagios (Reference: https://www.nagios.org/about/screenshots/)

It helps to monitor services such as HTTP, SMTP, HTTP, SNMP, FTP, SSH, POP, and so on.

Figure 5: Prometheus architecture (Reference: https://prometheus.io/docs/introduction/overview/)

Prometheus
Prometheus is an open source tool used for monitoring and alerting systems. The Prometheus ecosystem has components such as Prometheus server, client libraries, a push gateway, exporters for services, an alert manager, and support tools. Features include a multi-dimensional data model, a flexible query language, and multiple modes of graph and dashboard support.

Prometheus characteristics
Open source Yes
Licence Apache License 2.0
Type Monitoring
Written in language(s) Go
Operating system supported Cross-platform
Stable release v2.22.0
Website https://prometheus.io/
Companies and projects that use Prometheus DigitalOcean, JustWatch, GrafanaLabs

 

Figure 6: Grafana support (Reference: https://prometheus.io/docs/visualization/grafana/)

Grafana supports the querying of Prometheus. The Grafana data source for Prometheus has been included since the release of Grafana 2.5.0.

LEAVE A REPLY

Please enter your comment!
Please enter your name here