More and more enterprises are seeing the value in applying DevOps and reshaping their current work structure. But just like with many things, the first question that comes to your mind is “where to start?’’.
One tool cannot fit all your needs. Especially when new instruments hit the market all the time and the whole movement is improving very prestissimo. A DevOps pro needs to make a selection based on the team’s requirements and factors like cost, functionality and so on.
We like thinking of DevOps as an orchestra of tools and practices led by a skilled conductor. After discussing the most trendy practices in our recent post, now let’s dig deeper and explore some top tools.
Infrastructure as code
Before we can dream of what we want to run, we need to define the existing world. And for this purpose Terraform is quite a relief. It’s a tool for building, changing, and versioning infrastructure safely and efficiently.
- It’s cloud-agnostic which means it can be used to deploy servers on any cloud provider;
- All the community modules are in the terraform registry;
- Supports all major public and private cloud infrastructure provisioning;
- It has its own DSL called HCL (Hashicorp configuration language).
Another purely awesome tool that can help you with configuration management and application deployment. It can also do IT orchestration, where you have to create a chain of events that must happen on several different servers or devices. Pretty cool that it’s open-source and agentless.
- Superb for small, fast and/or temporary deployments (for more complex Puppet is a better choice);
- Uses Python as the primary language, but you can write modules in any language;
- Can be used for cloud provisioning;
- If you’re a beginner, this one’s super easy to understand and master;
- This tool is very simple to use yet powerful enough to automate complex application environments.
This might be quite a delicatessen for a true IT gourmet. Chef is a configuration management tool for dealing with machine setup on physical servers, virtual machines and in the cloud. It’s probably one of the most powerful, yet the most complex tool in this field.
- Mastering the cloud is a lot easier with Chef in your kitchen;
- It has the concept of cookbooks and recipes. You can think of recipes as small programs written in a domain-specific language (DSL) dialect of Ruby;
- No need to start from zero since Chef provides you a recipe as a template. Over 3,000 cookbooks help you to set up web servers, application servers, database servers, and dozens of other types of servers. You simply customize them for your particular needs.
Puppet is one of the top DevOps programs for pulling the strings on multiple servers at once. It gets rid of any extra stress that comes with manual configuration steps. Programmers can write, test, and launch applications without waiting on Ops staff to deliver the resources needed.
- It’s open-source. Most commonly used on Linux and Windows, but can also be used on several platforms, including IBM mainframes, Cisco switches, and Mac OS servers.
- The configuration code is written using puppet DSL’s and wrapped in modules;
- Puppet runs a puppet agent on all server to be configured;
- Developed by keeping system administrators in mind. If most of you are developers, Chef might be a better fit.
Usually called Salt, it’s a Python-based super fast open configuration management tool with a weird vocabulary. Easy enough to get running in minutes, scalable enough to manage tens of thousands of servers, and fast enough to communicate with them in seconds.
By the way, we previously covered this tool in the post by our masterly SysAdmin Karolis Pabijanskas (if you haven’t read it, shame. (Shame! Shame!) Go read it.). Here are some of his insights:
- It’s VERY fast;
- It’s basically just a Message Queue (ZeroMQ) – you may already imagine all the possible benefits this can bring;
- Easy to scale with a syndicated set-up, which involves intermediate masters that handle most of the load for a subset of your infrastructure;
- Allows you to delegate most of the actual work on the target host itself – master only provides it with various configuration variables and templates;
- Can be used in a master-slave type of set-up, a masterless set-up over SSH, and many other ways in between;
- It really is just a big Lego – you can bend it to your will and not the other way around.
Continuous Integration and Continuous Delivery (CI/CD)
Simply put, Jenkins has become the open-source standard for managing the dev side of DevOps, from the moment you commit your code to your version control system until delivering code to production. Main goal – no more integration hell, boy, no more!
- Associated with a version control system like Git or SVN;
- Whenever new code is pushed to a code repository, Jenkins server builds and tests the new code and notifies the team with the results and changes;
- Very easy to use and has a very active community;
- Has tons of plugins to choose any environment.
It’s a basic tool that you should start including into your daily devs and ops practices. Docker creates isolated environments for applications called containers. These containers can be shipped to any other server without making changes to the application.
- Has a massive dev community. Years ago it earned huge popularity, now it’s a staple in their toolkit;
- A piece of the pie for a full-fledged dev team;
- Considered to be the next step in virtualization.
Vagrant is just one cool thing people have to learn to run a project. It‘s a tool for building and managing virtual machine environments in a single workflow.
- If we’re talking about production or CI, there is no comparison to Vagrant!
- Vagrant can launch machines like VirtualBox, VMware, AWS, OpenStack, etc. No matter what you need, Vagrant can launch it;
- Vagrant has plugins for cloud provisioning, configuration management tools, and Docker.
Consul is an open-source key-value store mainly for service discovery purposes. If you have a use case to store and retrieve configurations in real-time, consul is the right fit.
- It’s distributed, highly available, and extremely scalable;
- Simple for services to register themselves and to discover other services via a DNS or HTTP interface.
Also an open-source tool for storing and retrieving secret data.
- Can generate ephemeral and short-lived secrets on the fly;
- It provides many functionalities to store your secret key in an encrypted way;
- Can create ACLs, policies, and roles to manage how the secrets will be accessed by end-users;
- Flexible with a platform-agnostic solution.
This one is obvious. We need logging mechanisms. They must be understandable and shared with the right fellas (devs, ops, managers). Prometheus is a mainstream open-source monitoring system and a time-series database for those that lean heavily on containers and microservices.
- Supports Linux server and container monitoring;
- Allows to query and inspect your infrastructure metrics with lovely graphs;
- Maintains Kubernetes and Openshift monitoring. The alert manager manages all the alerting set up for the monitoring metrics.
Consider this one as the plumbing that makes web apps run faster. New Relic is a cloud-based solution for application monitoring.
- Supports monitoring of various applications like PHP, Ruby, Java, Node.js, etc.;
- Allows access to the same data, in real-time for the whole digital team. So this means better collaboration and more informed decisions;
- New relic uses various metrics to provide valuable insights about the application it is monitoring.
We reviewed just a small part of the orchestra of tools, yet a very trendy one. Again, DevOps is all about direction, managing people and technology. More and more pros in this field are needed – not just to select the right practices and tools based on team needs, but also to lead the people during their DevOps journey.
If you’re a technical visionaire, join us! Apply for the position of DevOps Engineer @Tesonet and let’s build the digital future together.