DevOps Onboarding Guide

A foundational setup guide for newcomers to DevOps engineering, backend developers, and anyone establishing a fresh development workstation on Windows.

Estimated time: 60-75 minutes · Last updated: May 27, 2026

1 Hardware Requirements

ComponentMinimumRecommended
RAM16 GB32 GB
Storage500 GB SSD1 TB SSD
ProcessorIntel i5 / AMD Ryzen 5Intel i7 / AMD Ryzen 7
OSWindows 11Windows 11 (latest)
Note: SSD storage is required — Docker and WSL perform poorly on HDD. Make sure Windows is fully updated before proceeding — WSL 2 and Docker depend on recent Windows components.

2 WSL Installation

Open PowerShell as Administrator and run:
wsl –install
Install Ubuntu 24.04 LTS from the Microsoft Store, then update packages:
sudo apt update && sudo apt upgrade -y
Enable systemd so newer tools (Docker rootless, Snap, Tailscale, k3s) work cleanly. Add a small config block to /etc/wsl.conf:
sudo nano /etc/wsl.conf # Add these two lines: [boot] systemd=true
Then from PowerShell, run wsl --shutdown and reopen Ubuntu.

3 Visual Studio Code

Install VS Code from code.visualstudio.com, then add recommended extensions:
WSL (Microsoft) GitLens Docker HashiCorp Terraform Python Pylance GitHub Copilot (optional) Claude Code (optional)
Connect to WSL from your terminal:
code .

4 Terminal Customization (Optional)

A good-looking terminal helps with productivity and makes it easier to see which directory, branch, or environment you’re working in. Oh My Posh adds a customizable prompt with Git status, Python/Node versions, and more.
# Install Oh My Posh curl -s https://ohmyposh.dev/install.sh | bash -s

5 Docker Desktop

Download from docker.com/products/docker-desktop. Enable WSL 2 integration during installation.
Verify:
docker –version docker run hello-world

6 Git Configuration

# Install Git sudo apt install git -y # Configure user git config –global user.name “Your Name” git config –global user.email “your@email.com” # Generate SSH key (Ed25519) ssh-keygen -t ed25519 -C “your@email.com” # Copy public key cat ~/.ssh/id_ed25519.pub
Add the public key to your GitHub or GitLab account under SSH Keys settings.
Test connection:
ssh -T git@github.com
Want to push without password prompts? See How to Configure Git Pushes Without Authentication Prompts. Need a newer Git version? See How to Upgrade Git on Ubuntu.

7 GitHub CLI

The gh command lets you open pull requests, review code, manage issues, and trigger workflows without leaving the terminal.
# Install GitHub CLI sudo apt install gh -y # Authenticate (pick GitHub.com, then SSH so it reuses the key from Step 6) gh auth login # Verify gh auth status
Useful starters: gh repo clone owner/repo, gh pr create, gh pr checkout 123, gh issue list.

8 AWS CLI

curl “https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip” -o “awscliv2.zip” unzip awscliv2.zip sudo ./aws/install # Verify aws –version
Configure with access keys:
aws configure
You will need: AWS Access Key ID, Secret Access Key, default region (us-east-1), and output format (json).
Using AWS SSO? If your team uses AWS IAM Identity Center (SSO) instead of static access keys, follow How to Configure AWS SSO CLI Access for Linux Ubuntu instead.

9 Python via pyenv

Use pyenv to manage Python versions — it lets you switch versions per project without messing with the system Python.
# Install dependencies sudo apt install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ libffi-dev liblzma-dev # Install pyenv curl https://pyenv.run | bash
Add to your ~/.bashrc or ~/.zshrc:
export PYENV_ROOT=“$HOME/.pyenv” export PATH=“$PYENV_ROOT/bin:$PATH” eval “$(pyenv init -)”
Then install Python:
pyenv install 3.13.2 pyenv global 3.13.2
Install uv from Astral as a faster replacement for pip and venv. Same commands, 10-100x faster, and it manages virtualenvs and lockfiles too:
curl -LsSf https://astral.sh/uv/install.sh | sh # Verify uv –version
Common uv commands: uv venv, uv pip install, uv pip compile, uv run script.py.

10 Node.js via nvm

Use nvm (Node Version Manager) to install and switch between Node.js versions — similar to pyenv for Python.
# Install nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash # Reload shell source ~/.bashrc # Install Node.js 22 LTS nvm install 22 nvm use 22 nvm alias default 22
Verify:
node -v npm -v
Need to switch versions later? See How to Switch Node.js Version in WSL Ubuntu.

11 OpenTofu

OpenTofu is an open-source fork of Terraform and a drop-in replacement. It works with existing Terraform files and is the recommended IaC tool for this setup.
# Install OpenTofu via the installer script curl –proto ‘=https’ –tlsv1.2 -fsSL https://get.opentofu.org/install-opentofu.sh -o install-opentofu.sh chmod +x install-opentofu.sh ./install-opentofu.sh –install-method deb rm install-opentofu.sh # Verify tofu –version
Optional: If your team uses Terraform (HashiCorp) instead, see How to Configure Terraform on WSL Ubuntu for AWS Provisioning.

12 Serverless Framework

npm install -g serverless # Python requirements plugin (per project) npm install –save-dev serverless-python-requirements

13 Pre-commit & Code Quality

Set up pre-commit to automatically run linters and formatters before each commit. Catches issues early.
pip install pre-commit # Verify pre-commit –version
Inside your project directory, create a .pre-commit-config.yaml and run:
pre-commit install

14 AI Coding Assistants

Terminal-based AI agents accelerate everyday work: code review, debugging, drafting tests, writing migrations. Pick one or run them side by side.
Claude Code CLI (Anthropic):
npm install -g @anthropic-ai/claude-code claude
OpenAI Codex CLI:
npm install -g @openai/codex codex
Hermes Agent (Nous Research). Multi-provider (Claude, GPT, xAI, Nous), includes a browser dashboard:
pip install –user hermes-agent hermes postinstall hermes setup

15 Modern CLI Tools

Drop-in replacements for grep, find, cat, ls, and cd. Faster, more readable output, and easier to use day-to-day.
# Install the essentials sudo apt install -y ripgrep fd-find bat fzf jq eza # zoxide (smarter cd) curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
Add aliases and zoxide init to your ~/.bashrc:
# Ubuntu installs fd as fdfind and bat as batcat; alias them back alias fd=‘fdfind’ alias bat=‘batcat’ alias ls=‘eza –icons –group-directories-first’ # zoxide eval “$(zoxide init bash)”
What each tool does: rg replaces grep, fd replaces find, bat replaces cat with syntax highlighting, fzf adds fuzzy-finding (try Ctrl+R), jq parses JSON, eza replaces ls, zoxide replaces cd with frecency-based jumps.

Verification Checklist

Click each item as you verify. All commands should return a version number:
  • wsl –version
  • git –version
  • gh –version
  • docker –version
  • aws –version
  • python –version
  • uv –version
  • node -v
  • npm -v
  • tofu –version
  • sls –version
  • pre-commit –version
  • rg –version

Next Steps