3 DevOps Tools You Should Start With
There are so many options out there; here's a quick guide to finding the right ones.
I feel like we must almost be to the end of the DevOps craze; people are starting to feel about the word 'devops' the way we can all remember feeling about 'cloud.' Nonetheless, we still have a long way to go in terms of adoption. In talking with administrators and CIOs from companies all over, my conclusion is that outside of the enterprise, the DevOps mentality is just starting to take hold. Many medium and small businesses have yet to take their first look at different methodologies and paradigms to help them reach their goals.
If you're one of these people in one of these organizations that are just beginning to look, here are three tools that you can begin to familiarize yourself with to start to get a feel for what the new world of IT might look like for you. I've intentionally chosen one that I like from each of three categories; it's actually the categories that matter, not the specific tool (or set of tools) that I've chosen based on personal biases. The three categories:
- Configuration management and/or orchestration
- Log visualization and analysis
- Version control
At the bottom of each of the three sections, I'll list another option or two that could be considered an alternative, if my particular choice doesn't strike your fancy.
I don't have loads of personal experience with configuration management tools, but I chose Ansible for this category. The anecdotal data I've collected suggests that many people try a tool like Puppet or Chef and are quite happy with it, but eventually they try Ansible and never look back. While comparing these three tools isn't exactly comparing apples to apples, they're in the same orchard.
Ansible was conceived by Michael DeHaan and initially released back in 2012. (As of the time of this writing, Ansible has an agreement to be acquired by Red Hat.) Ansible is a configuration management platform that leverages either Python or PowerShell on the client side to configure systems. The description of systems state is expressed in YAML (which looks somewhat similar to JSON, if that's more familiar to you) in a construct known as a Playbook. A Playbook can define configuration for single systems as well as across many systems.
Configuration management is important for numerous reasons:
- Infrastructure-as-code -- the concept of letting descriptive files like Playbooks define configurations -- ensures a level of consistency that no human (or team of humans) could manage.
- By the same token, it all but eliminates the problem of tribal knowledge. By getting the configuration into a file instead of someone's head, anyone can pick up where they left off.
- It scales. Ansible could configure literally hundreds of systems in the same time that a well-trained developer or administrator could configure one.
- Compliance and auditing is easier, as the infrastructure is essentially self-documenting.
- The more configurations are committed to the configuration management tool over time, the more efficient the IT staff gets, because the humans have to do less configuration work. This frees them up to do proactive tasks.
- Change management is more easily navigated. Rolling back changes is easier. And tracking down issues after a change is easy; again, because the infrastructure becomes self-documenting at a certain point.
As promised, if Ansible doesn't look quite right, here are a few other configuration management options an organization could consider:
2. ELK Stack
Analytics and Big Data are all the rage, right up there with DevOps. And they actually go hand-in-hand. Being able to take control of the data being collected from your infrastructure and generate insights is really core to the DevOps paradigm. One of the ways to do this is to collect the copious amounts of log data that almost every infrastructure generates (whether it's being collected and leveraged or not) and crunch and visualize it so that the IT organization can make adjustments and track down issues based on the information.
ELK Stack is one way to accomplish this. As the name ("stack") implies, ELK is not actually a tool in itself, but a useful combination of three different tools: Elasticsearch, Logstash, and Kibana (hence "ELK"). All three are open source projects maintained by Elastic. The descriptions of each tool from Elastic is great, so I won't reinvent the wheel. Elastic says they are:
- Elasticsearch: A distributed, open source search and analytics engine, designed for horizontal scalability, reliability, and easy management. It combines the speed of search with the power of analytics via a sophisticated, developer-friendly query language covering structured, unstructured, and time-series data.
- Logstash: A flexible, open source data collection, enrichment and transportation pipeline. With connectors to common infrastructure for easy integration, Logstash is designed to efficiently process a growing list of log, event and unstructured data sources for distribution into a variety of outputs, including Elasticsearch.
- Kibana: An open source data visualization platform that allows you to interact with your data through stunning, powerful graphics. From histograms to geomaps, Kibana brings your data to life with visuals that can be combined into custom dashboards that help you share insights from your data far and wide.
To put it more simply, the tools, respectively: provide fast search over a large data set; collect and distribute large amounts of log data; and visualize the data.
If ELK Stack doesn't meet your data insight requirements, there are other awesome options as well. Consider:
GitHub is perhaps the most popular implementation of distributed revision control and source code management. GitHub is based on Git
, which you can also use to host your own homegrown repository hosting service if you have strict security and governance requirements, or you simply require a bit more control. GitHub launched in 2008 and has been massively popular, so as far as DevOps tools go, it's very mature and has a long track record of successful use.
A tool like GitHub is important, because as you begin your DevOps journey, there will be lots of code. Piles of code left unmanaged and unorganized quickly gets difficult to keep track of; versions start to diverge and mutate and eventually the entire code base is just a mess. This is where a source code management tool like GitHub can help keep you (and/or your team) organized and in control. GitHub is particularly useful when working with a team because it also includes features like bug tracking and feature requests. This can help prioritize and keep a project on track.
If, for some reason, GitHub isn't your thing, here are a few other source control tools you could investigate:
Obviously, getting started with these tools is only scratching the surface of what your DevOps journey will entail. But from what I understand from people deeply entrenched in functioning, thriving DevOps cultures, these tools will set you off in a great direction!
vExpert James Green has roughly a decade of experience as an IT administrator, architect and consultant in a variety of organizations. He's highly certified, and continues to purse professional certifications to increase his breadth and depth of knowledge. He has always been passionate about writing and speaking, and discussing the marriage of cutting-edge technology and business is one of his favorite activities. He works for ActualTech Media, www.actualtech.io.