The lesser known tools of a DevOps Engineer

Introduction

I’m always on the lookout for tools that make common tasks quicker and / or easier.

In this post I’ll cover some of the tools I’ve discovered along the way, use day to day, and some of the functionality I find useful.

They are not all necessarily directly related to DevOps or Cloud, some are general productivity based tools. That said they are tools I as a “DevOps Engineer” frequently use to make life a little easier.

Some of these are probably already tools some of you are aware of, but I know when I’ve read similar articles in the past I’ve found the odd gem along the way so hopefully you will find something of value.

cmd.ms

How many times have you wanted to just get to a particular MS admin portal, or resource type in Azure? cmd.ms has become a tool I use every single day. Created by Merill Fernando, Microsoft Entra’s principal product manager, this tool lets you quickly and easily navigate between portals, and even blades within portals.

It offers a browser extension which is what I use. I’ll openly admit the first time I tried to use this I somewhat gave up, however after trying a second time and sticking with it, getting to just about anywhere in Azure is a breeze.

Once you start to remember some of the short codes (they are all pretty self explanatory) with the extension you can see how fast you can get to different places.

Check it out here – 🖥 Home | [cmd.ms]

PowerToys

PowerToys is a collection of useful tools from Microsoft. There’s over 20 different tools in total, some of which I have not used, but a few I have used frequently. I’ll cover the top five (in no particular order) I’ve used frequently.

Check out the GitHub page for a full list of the tools and more info here – microsoft/PowerToys: Windows system utilities to maximize productivity (github.com)


Fancy zones


Fancy zones is a must have for anyone that has a lot of screen real estate. It essentially allows you to carve up area’s of the screen and snap windows into those spaces. You can create many different layouts and easily switch between them. Think of it as snap layouts on steroids.

Since switching from dual screens to a single ultrawide this has been something I used every single day. For my workflow I mostly stick to the below, having my main active window (normally VSCode, Lens, or a browser window) in the centre, terminal at the bottom, teams to the right, and any other reference material or email on the left.

There are several ways to move windows between zones, or snap windows to zones. My favourite is to set the option Use non-primary mouse button to toggle zone activation. I can tap my right mouse button while moving a window to activate the zones and drop it in the one to snap to.


Host File Editor


A quality of life improvement if you are someone who finds themselves frequently editing their host file.

You can easily add and remove entries, as well as toggling them on and off (it comments and uncomments the lines). Other useful options for filtering if you have a ton of entries.


Paste As Plain Text


Most apps have their own keyboard shortcut for pasting text as plain text, or “paste special” but the key combo is not always the same across all apps, and if its “paste special” you have an extra step of choosing what to paste.

With this you always know what you will get. The keyboard shortcut can be customized, the default is Win+Ctrl+Alt+V


Text Extractor


Text extractor lets you quickly do OCR on images. There’s been many times people have provided me an error message as an image, maybe with tracking ID’s / correlation ID’s in which is frustrating. This lets you select part of your screen and copies the plain text into your clipboard.

For the most part it does a really good job, although I’ll admit when copying GUID’s it sometimes gets the odd character wrong – mistaking a 5 for a S etc, but better then having to type out the whole thing from scratch!


PowerToys Run


As someone who frequently used Win+R to use the run dialog, this is a welcome improvement. It’s pretty much the run dialog on steroids.

The shortcut can be customised, its Alt+Space by default, and gives you the following text box centre of your screen. It supports pretty much everything the run dialog did and more, its also got lots of customization options.

It supports launching all of the tools bundled in PowerToys and this is my primary method of launching them.

DevToys

DevToys is an app that has many different functions, mainly aimed at developers, wrapped up in a nice intuitive UI.

I’ve not used all the functionality but some tools I have used often are:

  • Base64 text encoder and decoder
  • JWT Decoder
  • Password Generator
  • Regex Tester

I think the opening paragraph on GitHub says it all “DevToys helps with daily development tasks like formatting JSON, comparing text, and testing RegExp. No need to use many untrustworthy websites to do simple tasks with your data.” Plenty of web sites exist for things like decoding JWT, testing regex etc, but can they all be trusted?

Check out the GitHub page for a full list of functionality and more information – veler/DevToys: A Swiss Army knife for developers. (github.com)

Windows Terminal

Finally a modern terminal from Microsoft. As someone who is in and out of terminal all day for things like Git, Terraform, AZ CLI etc etc this is a welcome offering.

Tabs, profiles, Unicode support, GPU accelerated text rendering, what is there not to love. Personally for me my two favourite feature are the tabs, and the “actions”.

My primary shell is PowerShell but I do often switch between PowerShell Core and Windows PowerShell (for those modules that don’t support core). And frequently in and out of Ubuntu in WSL, mainly to use terraform console, and for writing and testing bash scripts. So for me the tabs keep my daily workflow tidier and saves multiple windows.

The “actions” are pretty much just key bindings / shortcuts. You can create your own, linked to either native functionality in Windows Terminal its self, or have it issue keyboard input.

My personal favourite custom key bindings

Key ComboDescriptionCommand
Alt+KClear the terminal window.cls
Alt+IRun a terraform init with no backend. Used to get autocomplete in VSCode and allow terraform validate to run.terraform init -backend=false
Alt+VRuns my PowerShell module to invoke terraform validate and confirm-tfvars.Confirm-TF

VSCode Extensions

VSCode is another tool I’m in almost daily, so seems only right to discuss extensions. I’ll skip the most obvious ones and cover some people may not have used, or heard of.


Tree Exporter


Easily generate a directory tree using ascii characters. Useful for using in README of repo’s. I find this especially handy when creating shared terraform modules.

Check it out – Tree Exporter – Visual Studio Marketplace


Atom One Dark Theme


Not much to say – a really nice dark theme for VSCode based on a popular theme for ATOM. Because which sane person doesn’t use a dark themed IDE?

Check it out here – Atom One Dark Theme – Visual Studio Marketplace


Better Comments


Automatically add conditional formatting to comments depending on what pattern they use. Highly customizable, and once you get used to using the prefixes its easy to search an entire project for particular types of comments.

Check it out here – Better Comments – Visual Studio Marketplace


Code Spell Checker


Self explanatory! Only enabled by default on certain file types so double check, as an example isn’t enabled by default on terraform files.

Check it out here – Code Spell Checker – Visual Studio Marketplace


GitLens


I think anyone using VSCode and Git is already going to know about this, but there was once I was a person that didn’t, and its too good an extension to skip. So much functionality, if you use Git and VSCode you need it!

Check it out here – GitLens — Git supercharged – Visual Studio Marketplace


Terraform Doc Snippets


Easily get access to example snippets from the terraform documentation. Really handy if you are wanting to create a resource that you are not familiar with.

Check it out here – Terraform doc snippets – Visual Studio Marketplace


Terraform documentation links


Lets you hover over a terraform resource or data block and get a clickable link directly to the documentation of that resource / data block.


vscode-icons


Self explanatory – a boat load of nice easily identifiable icons used in the explorer

Check it out here – vscode-icons – Visual Studio Marketplace


PowerShell Modules

Using PowerShell core as my primary shell, there are some PowerShell modules I rely on. I’ll touch on some of the most useful.


Posh-Git

Posh-Git provides tab context based auto complete for git, and a prompt which can shows which branch you are in, and other git info. It also integrates nicely with OhMyPosh which is mentioned below.

Check it out – dahlbyk/posh-git: A PowerShell environment for Git (github.com)


OhMyPosh


OhMyPosh allows you to have a customized prompt in PowerShell. The prompt is made up of different segments you can choose from to build a theme, there are also loads of pre-built themes to choose from.

One of the segments you can use is git, its context aware so wont take up space when not in a directory that has no git config. It can show your active branch as you switch between them, and things like how many files are waiting to be staged.

Another feature it supports is something called tool tips. On the right I have it display which Azure subscription Azure PowerShell has its context set to. When I start to type an az command it will change and show me which subscription AZ CLI has its context set to, and finally for kubectl it will show me which cluster and namespace the context is set to.

The possibilities are pretty much endless, with segment support for things like

  • Angular
  • Dotnet
  • Python
  • Docker
  • Terraform
  • System Info

Check it out – Home | Oh My Posh


PSReadline


Where to start with this, if your in PowerShell any amount of time, just install it. There’s a load of functionality you can implement like smart quotes, key chords, but for me its mainly the history and prediction I make use of.

Some auto complete plugins for it to check out

Again highly customizable but I have suggestions set to list based like below.

Check it out – PowerShell/PSReadLine: A bash inspired readline implementation for PowerShell (github.com)


Terminal Icons


Self explanatory – adds icons to directory listings.

Check it out here – devblackops/Terminal-Icons: A PowerShell module to show file and folder icons in the terminal (github.com)


Z


A port of the popular bash script by the same name. TL;DR – lets you navigate between previously used directories quicker.

Check it out here – badmotorfinger/z: Save time typing out directory paths in PowerShell by jumping around instead. (github.com)


Confirm-TFVars


I couldn’t cover PowerShell modules and not plug one of my own.

Confirm-TFVars lets you validate variable values in tfvars files based on their definition and validation rules.

Check it out here – jamesw4/Confirm-TFVars: Cross platform PowerShell module to validate tfvars files. (github.com)

OpenLens

This is probably going to split opinions as I know there are some die hard kubectl users out there.

OpenLens is the open source version of what is now Lens Desktop. It is a GUI based tool for managing Kubernetes clusters. Pretty much anything you can view or do with kubectl you can do with OpenLens.

Working with mutli-tenant clusters, I personally find this a much pleasant experience over typing away with kubectl. As an example I don’t always know the names of the namespaces of the project team’s I’m trying to help.

This gives you everything on a plate, most screens have a namespace filter which is a drop down list of all names spaces.

Some major functionality was stripped out of the open source version but can be added back in via an extension.

Best extensions to check out

Checkout OpenLens here – lensapp/lens: Lens – The way the world runs Kubernetes (github.com)

Leave a Reply

Your email address will not be published. Required fields are marked *