DevOps tools support your DevOps initiatives
Whether you’re edging toward a full DevOps initiative or simply looking for ways to better communicate and collaborate across functions, you and your IT organization can take advantage of a wide variety of free and proprietary DevOps tools to help you along.
DevOps tools are those that promote sharing and collaboration, and they're so widely used, you may already be familiar with some of the ones described below. The key to expanding DevOps culture and practices is to think about how they might be used beyond your IT department, and shared in new ways with developers and others beyond the operations team.
You can also think about how IT operations can adopt tools that are used in software development teams, and use them to incorporate development practices in IT operations. This is another example of how the tools used in a specific discipline become DevOps tools.
Just as a refresher: DevOps is really a set of cultural principles and technical practices intended to speed development and deployment of software while improving the quality of that software, and aligning the entire process with the business goals of the organization. DevOps is also a way of thinking and working that provides a meaningful bridge between the competing priorities of operations and development: Operations is tasked with making things stable and dependable, while developers are tasked with responding quickly to the changing needs of customers and the marketplace.
No single "DevOps tool" can get you there. Still, the tools that bring about sharing and convergence can help change the organizational mindset that holds you back, and prevents DevOps practices from taking root.
DevOps tools help create a DevOps culture
At its core, DevOps seeks to:
- Change aspects of your organization’s culture that hinder consistent outcomes.
- Encourage automation of routine tasks and free operations staff to work on strategic projects.
- Enable measurement that can be acted upon, promoting a culture of continuous learning and improvement.
DevOps tools and practices are supposed to encourage sharing of information, resources and responsibilities, and to end (or in the interim, significantly erode) the toss-it-over-the-wall mentality that prevents operations, development and security teams from thinking more broadly and working together. The right tools aid and promote the sharing that must happen if you really want to speed the delivery of better-quality code.
If you’re skeptical about how any software tool can change your department or organizational culture, think about how social media changed how people get information, or how SMS changed how not just how people communicate, but also encouraged them to form ever-shifting ad hoc communities around shared ideas and interests. Just make sure that when it comes time to select your tools, you pick what fits in best with your organization, instead of selecting things based solely on features.
Don't forget: if you’re not looking for ways to better automate, measure and share, you can be sure your competitors are, regardless of the industry you’re in. So don’t be afraid to dive in and try some of these DevOps tools, many of which are free.
DevOps tools to consider
The greatest advantage of an organizational wiki isn’t that it’s a central clearinghouse for information, but that it’s actually easy to use. I’ve rarely met anyone who enjoys the task of documenting IT practices, so it simply doesn’t get done in most organizations. What isn't documented can’t be shared, and that will hurt any DevOps effort. The following wiki platforms make it easy for everyone across your organization to create living documentation.
MediaWiki – If you’ve used Wikipedia, you’re familiar with the look and feel of MediaWiki because it was built on MediaWiki. The scale of Wikipedia should give you a good sense of how well MediaWiki handles lots of information across lots of topic areas (and languages), but it’s also notable for its ease of use. You don’t need any programming skills to make it work, and it’s easy to create and edit content pages. It can use MySQL, PostgreSQL, Oracle or SQLite as its database. Free.
Confluence - Confluence is a part of the family of products from Atlassian which notably, includes ticketing system Jira and HipChat (listed below under ChatOps). If your organization is looking for something to track the work that lead to the documentation you create, and thinks it would be valuable to have all these things tightly integrated, then you should take a closer look. Not free, but has a flexible pricing structure that include on-premises self-hosted installations, plus a SaaS offering.
TikiWiki – If you’re looking for a more business-minded wiki, TikiWiki bills itself as that option, complete with wiki, blog, forum, calendar and other features. It also employs WYSIWYG editing and RSS, with make both contributing and sharing easy. Free.
DokuWiki – If you’re keen on managing your documentation as files, not in a database, DokuWiki or PmWiki may be your best choices. The data files are stored in plain text, which means you can read (and create) them without the wiki. Free.
PmWiki – Like DokuWiki, PmWiki uses plain text files to store page data. It also features access control, and built-in mobile support with plenty of plugins to manage a wide array of documentation needs.
WikiMatrix – This handy site lets you compare dozens of different wikis in one place. This link shows a comparison of the four listed above.
Just as instant messaging changed how people communicate in real time, ChatOps offers similar capabilities for business, with features that make it more useful for organizations looking to improve sharing and collaboration quickly and easily, in real time.
IRC - IRC (internet relay chat), the mother of all ChatOps, is an open source chat platform that's been around since before public adoption of the internet (or World Wide Web, as we once called it). IRC is still widely used today on a multitude of sites, including freenode (where Puppet provides community support), as well as IRCnet and others. Free.
Slack – Slack is a popular platform that enables you to organize conversations by teams, and create public and private channels that make information as transparent as you want. Free. The paid version is $80 per year per user.
HipChat – Like most of these tools, you can create a group by merely allowing everyone from your domain – @example.com – to start collaborating. You can also create open or private rooms, add files and links, and easily search threads. Free for basic; $2 per month per user for Plus.
Microsoft Teams – For those already using Microsoft’s Office 365, Microsoft Teams is their recently released chat platform that offers smooth integration. Like other collaboration tools, it allows you to engage your team and others, overlapping components as needed, even creating internal and external groups.
Automation tools that support DevOps practices
An important part of DevOps is moving quickly, and if you’re still doing a lot of basic configurations by hand, you’re going to be hard pressed to make systemic changes at any scale. With a tool like Puppet, you can quickly and reliably create users and groups, configure firewalls, and ensure key services are in place everywhere you need them — and nowhere you don’t.
Puppet – Of course, I advocate Puppet as the go-to automation tool because it can not only automate the mundane stuff you and your ops team have to do, but also be easily read and understood by people beyond ops. Puppet's straightforward declarative language abstracts the details of configuration management across different operating systems and other technologies, allowing you to start with something simple and engage more people inside and outside your team as you move forward. This helps you become more transparent about all the work your teams do.
In fairness, I should also list Puppet under the Culture section, because it lends itself to a work process that can positively change how you tackle work. The open-source version is free, as is Puppet Enterprise for up to 10 nodes. Pricing for larger Puppet Enterprise deployments starts at about $100 per node, but varies depending on size of deployment and other factors.
Docker – I list Docker under automation, because as you look for ways to speed deployment, Docker is a great option, particularly for dev environments. By creating your own images — or modifying existing ones to meet your needs — you get environments that are consistent, lightweight, quick to deploy and repeatable. Docker integrates well with Puppet, so you can use the more than seven million lines of Puppet code that already exist to build robust images. These Docker-Puppet integrations allow you to bring up an entire Docker or Puppet environment in minutes. There's a free version of Docker, and various paid versions are available, too.
APIs – As more and more services move to the cloud, an added benefit are their robust APIs that allow you to push and pull data to and from everything from Dropbox to Salesforce. Though not strictly automation, I’d argue that using the APIs for on- and off-premises cloud apps can give you excellent centralized data management that can be shared across your organization via intranet pages or custom dashboards. In fact, everyone can benefit from using the built-in dashboard and reporting tools available in most cloud-based tools.
Measurement tools that enable DevOps practices
Measuring and auditing are important in any IT organization. They takes on even greater value as a DevOps tool because measurement enables transparency, information sharing and actionable data.
Splunk – Whether you’re new to Splunk or you’ve been using it for some time, most would agree it’s a powerful way to monitor and dig into machine-generated data. Its ability to quickly index any data — even different data types — makes Splunk an ideal DevOps tool for getting a bird's-eye view of your systems and for sharing this information. Free for open-source version; various licensed versions start at $162 for 1Gb per month.
Graphite – As an intelligence tool, Graphite does a great job of turning rather archaic machine-generated data into on-demand graphs. When used with your data-collection agents (which might be as simple as Cron jobs set to echo some data to the Graphite server), it will render dashboards and graphs, which can be deployed on other web pages or apps with the JSON-based API. Free.
DevOps tools for continuous delivery
Git – Most Linux users are familiar with the command line Git tool for managing version control of software projects. Even new users can get up to speed quickly, particularly if your first goal is to share master versions of application files to distributed teams. By itself, Git doesn’t have a centralized, shared repository, but that can be solved with a solution like GitHub. Free.
GitHub – GitHub is a company that provides hosting for Git repositories. It also provides some nice graphical tools that make sharing across an organization a lot easier. After all, not everyone feels all that comfortable running a command line app, which in itself can serve as a barrier between teams. The Git website also features some other graphical tools. GitHub offers both public repositories (free) and private repositories starting at $7 per month.
Mercurial – Like Git, Mercurial is a version-control tool that’s a little less wonkish than the others. It has some unique features, like an instant graphing tool, but its distributed nature is perhaps its greatest selling point Mercurial is a lot like Git in that neither relies on a central repository but like GitHub for Git you can use Bitbucket from Atlassian (Free and Paid) to host your repository.
Gerrit – If you like the idea of having your code repositories and code review happen in the same place, Gerrit makes that happen. It’s a web-based code review and repository management for the Git version control system.
GoCD – A key principle of DevOps is continuous delivery, which is all about releasing code in short, reliable cycles rather than big dumps. Go is a continuous integration tool that provides visibility into your end-to-end workflow. It allows you to compare builds, and with dozens of handy plugins, you can do some interesting things right out of the gate. Free. Expert support available for a fee.
GitLab – In keeping with the idea that more is better, GitLab offers users a unified tool built around Git, including code review, wiki documentation, APIs and even an IDE (integrated development environment) with the integration of Koding. Because everything’s integrated, everything’s transparent. That makes it easy for team members to see, weigh in and participate. Free for Community Edition. Enterprise versions start at $3.25 per month.
Jenkins – Jenkins can be used as a either a simple continuous integration server or a continuous delivery hub for your projects. It offers users hundreds of plugins to support building, deploying and automating any project, and the new Blue Ocean sub-project offers a slick way to build, run and analyze project pipelines that integrate with your Git repository and even post updates. (There's even a Puppet Enterprise plugin for Jenkins Pipeline.) Jenkins is free.
Go get you some DevOps tools
I hope this post gives you a taste of some of the handy tools that can help you with your work while helping you think more broadly about how you work. This is just a taste — and there are certainly other DevOps tools to try — but go ahead and give these a go with an eye toward improving collaboration. Remember, choose the tools that fit in with your organization and the kind of work it does. No matter how popular a tool may be, if it doesn't work well for your group, it's not going to help you improve.
Cody Herriges has held a number of different engineering positions at Puppet, including principal sysops engineer and professional services engineer. He is currently a business development manager in the areas of containers and future technology.