DevOps Onboarding Guide
A foundational setup guide for newcomers to DevOps engineering, backend developers, and anyone establishing a fresh development workstation on Windows.
1 Hardware Requirements
| Component | Minimum | Recommended |
|---|---|---|
| RAM | 16 GB | 32 GB |
| Storage | 500 GB SSD | 1 TB SSD |
| Processor | Intel i5 / AMD Ryzen 5 | Intel i7 / AMD Ryzen 7 |
| OS | Windows 11 | Windows 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.Full walkthrough: How to Install Ubuntu in WSL 2 on Windows. Having DNS issues? See How to Make Resolve Config Changes Permanent in WSL 2.
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 .
Need help connecting? See How to Connect VS Code with WSL 2 for Linux Ubuntu.
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
Full setup guide: How to Make Your WSL Ubuntu Terminal Look Better with Oh My Posh.
5 Docker Desktop
Download from
docker.com/products/docker-desktop. Enable WSL 2 integration during installation.Verify:
docker –version
docker run hello-world
Getting “permission denied”? See Resolving WSL Permission Denied When Connecting to Docker Daemon.
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.
Detailed install guide: How to Install AWS CLI v2 on Ubuntu 22.04.
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
Full guide: How to Install OpenTofu on WSL2 Ubuntu.
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
Full guide: How to Install and Use Pre-commit on Ubuntu WSL 2. For Python formatting, see How to Use Flake8 and Black for Code Quality.
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
Setup walkthrough: Install Claude Code CLI on WSL2 Ubuntu.
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
- Clone your team repositories and run a local build
- Spin up a Docker container and test a service locally
- Deploy a test Lambda function using Serverless Framework
- Explore your AWS environment with
aws sts get-caller-identity - Launch an EC2 instance on AWS to practice server management
- Set up passwordless SSH login to your servers
- Learn VPC and subnet design for your AWS infrastructure
- Install Claude Code CLI on WSL2 for AI-assisted development