DevOps

Linux DevOps tools: Building Linux Infrastructure as Code Workstation

Linux DevOps tools: Building Linux Infrastructure as Code Workstation

I have been doing quite a bit of DevOps work the past few months and have found myself working with Linux tools more and more. With this being said, I have built up a Linux DevOps workstation to use as a DevOps platform side-by-side with my Windows workstation. This is being ran inside a VMware Workstation environment currently on my new IBM P620 ThreadRipper (more on that in a future post). I wanted to put together a quick post and detail the Linux Devops tools that I am using and have subsequently loaded on the Ubuntu workstation. Also, a few little pesky issues that I have ran into that are due to coming from Windows as well as another issue I will detail. Let’s look at Linux DevOps tools: Building a Linux Workstation.

Why Linux for DevOps?

You may ask – why a Linux workstation? I will say this, my Windows 10 workstation has performed admirably carrying out DevOps work and I envision going back and forth between the two for now. However, it comes down to the fact that when you get deeper in to the DevOps world of containers and Kubernetes, most of the tools are natively written for the Linux world. You will find yourself trying to make tools work like they are in Linux when you run them on Windows. So, I finally got to the point of, why not just run them in Linux like they are written to do?

Also, going the other direction, things have matured on Linux beyond our wildest imaginations thinking back even 10 years ago. There are so many great tools that now work on Linux, ironically, thanks in part to Microsoft. When you think about PowerShell Core and VS Code, these work great on Linux. So, I applaud Microsoft for embracing the Linux world like they have all the way around, including WSL which I have written about quite a bit as well.

So there you have it, for me, now is a great time to embrace Linux full on with DevOps work I am doing as this will help to ease some of the pain I have been experiencing on the command line tools side of things running on Windows.

Linux DevOps tools

To begin with, I am working with an Ubuntu 20.04 workstation loaded in VMware Workstation with the latest patches in place on both fronts. What Linux DevOps tools am I loading?

VS Code

  • VS Code – My IDE of choice working with Terraform, Docker, Ansible, and others. This can be installed from the Ubuntu app store.

PowerShell Core

  • PowerShell Core – PowerShell Core terminal for interacting with various environments including vSphere!
Copy
# Update the list of packages
sudo apt-get update
# Install pre-requisite packages.
sudo apt-get install -y wget apt-transport-https software-properties-common
# Download the Microsoft repository GPG keys
wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
# Register the Microsoft repository GPG keys
sudo dpkg -i packages-microsoft-prod.deb
# Update the list of products
sudo apt-get update
# Enable the "universe" repositories
sudo add-apt-repository universe
# Install PowerShell
sudo apt-get install -y powershell
# Start PowerShell
pwsh

Git

  • Git – A must-have if you are working with Github or interacting with most code repositories and versioning systems
sudo apt install git

Docker

  • Docker – The de facto container runtime used everywhere. Loading Docker locally and installing the Docker plugin in VS Code to interact with Docker containers in VS Code
sudo apt install docker.io

Kubectl

  • Kubectl – THE tool for interacting with Kubernetes clusters – managing, configuring, installing, etc
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list


sudo apt-get update
sudo apt-get install -y kubectl
Using kubectl in linux devops
Using kubectl in linux devops

Helm

  • Helm – A “package manager” of sorts for Kubernetes clusters that allows installing applications in your K8s clusters
curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

Amazon CLI v2

  • Amazon CLI v2 – The tool for interacting with Amazon Web Services and using various credentials to authenticate with your environment
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Running aws configure on linux devops workstation
Running aws configure on linux devops workstation

Terraform

  • Terraform – The infrastructure-as-Code platform that is used by most to interact with all types of environments, including vSphere, AWS, Azure, GCP, etc.
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform
Running terraform 1.0.1 on linux devops workstation
Running terraform 1.0.1 on linux devops workstation

Also, as you can see above, I try to install as many of these as possible with package management. This allows easily managing the lifecycle of the tools in the future when new releases come out. Simply running your apt package management commands will pull down the latest versions.

Concluding

It is really an exciting time for DevOps. There are so many great tools out there as well as great platforms. You can use just about any platform you want to use to write Infrastructure-as-Code. However, Linux certainly has advantages when it comes to interacting with containers and Kubernetes environments with the various tools that are natively written for Linux anyway. I will keep this post updated and let you guys know my experiences migrating from Windows to Linux for DevOps purposes.

Subscribe to VirtualizationHowto via Email ๐Ÿ””

Enter your email address to subscribe to this blog and receive notifications of new posts by email.



Brandon Lee

Brandon Lee is the Senior Writer, Engineer and owner at Virtualizationhowto.com, and a 7-time VMware vExpert, with over two decades of experience in Information Technology. Having worked for numerous Fortune 500 companies as well as in various industries, He has extensive experience in various IT segments and is a strong advocate for open source technologies. Brandon holds many industry certifications, loves the outdoors and spending time with family. Also, he goes through the effort of testing and troubleshooting issues, so you don't have to.

Related Articles

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.