What’s in my cli tool belt?

2 minute read

Everyone has built a new laptop from scratch before and it’s always a struggle to make it “yours” again. I’ll walk through what I install to make it “usable” for my day-to-day job. I work a lot with Kubernetes, Docker, and VMware technologies. So my toolset focuses a lot on making my terminal more user friendly and the cli tools/plugins to make that experience faster and more efficient.

Step one, install Brew! Owning a Mac I can’t emphasize this enough. It’s like pip but it actually works! I try to install everything with brew because of ease of install/upgrade/re-install/automation.

NOTE: Please use the tools below at your own risk.


General

I left this part up to you(except brew :grin:). Brave as a browser has started to grow on me and I’ve used Tunnelblick for my VPN client for many years.


Terminal

The combinations here are endless, between getting the correct theme, font, and iTerm2 profile, you could spend hours on this step. In the end it will be completely worth it though. The version control (git) feedback as you are working with code additions/commits/branching/pushing/etc has tremendous value in tracking where you currently stand with your repository.

Before: Before

After: After


Container Tools

This section is pretty self-explanatory. One of my colleagues introduced me to dive as a cli tool to dig through docker image layers.


Kubernetes Tools

I spend the majority of my time working with Kubernetes. Tools like Kubectx/Kubens make cluster/context switching a breeze. Krew is relatively new, but it’s a community of plugins that extend kubectl cli functionality in various ways. Think of it has a plugin manager for kubectl.

Kind (Kubernetes in Docker) was introduced to me by @mauilion (Duffie Cooley). A tool for bringing up local Kubernetes clusters in Docker. It can also be used as a bootstrap cluster for ClusterAPI. Has a simple cli and cluster(s) are defined in yaml.


Developer Tools

In the dev tools, git is a tool that I can’t live without. It allows you to clone repo’s, track changes, commit code, push to remote repo’s, and much more. After you have your terminal setup with Git integration it becomes second nature to use for the basics. VS Code is my preferred editor because of all the plugins and native Git integration.

  • Git brew install git
  • VS Code
    • Plugins
      • Docker
      • Kubernetes
      • Python
      • Terraform
      • Markdown auto-preview
  • Postman
  • Go brew install go
  • Python3 brew install python3
  • Skaffold - brew install skaffold
  • Fly
  • Jx - brew tap jenkins-x/jx && brew install jx
  • jq - brew install jq
  • wget - brew install wget
  • watch - brew install watch
  • vault - brew install vault

Infrastructure Tools

Huge fan of Terraform and I’ve been using it for years for different use cases. The vSphere and NSX provider have matured over time and continue to do so. The ability to document how your infrastructure is deployed with .tf files provides a reference of how it was deployed and also can be tracked in version control.

  • Govc - brew install govmomi/tap/govc
  • Terraform - brew install terraform
  • Packer - brew install packer
  • Pulumi - brew install pulumi