Skip to main content

๐Ÿš€ DevOps Engineer Mac Setup Documentation

This document captures the full setup weโ€™ve done so far on your macOS system.

1. ๐Ÿ”ง Core Tools Installed with Homebrew

We used Homebrew to install base utilities:

Purpose:

  • git โ†’ version control
  • jq / yq โ†’ JSON/YAML parsing
  • htop, watch โ†’ system/process monitoring
  • GNU tools (sed, awk, etc.) โ†’ more powerful versions than macOS defaults

2. ๐Ÿณ Docker Setup

Problem:

Running docker ps gave:

Solution:

  • Installed Docker Desktop (daemon + GUI) via Homebrew:
  • Alternative: Colima for a lightweight Docker runtime:

3. ๐ŸŒ Browsers & Terminals

Installed additional tools:
  • Arc Browser โ†’ modern web browser
  • Terminus โ†’ customizable terminal
  • Warp โ†’ AI-powered modern terminal (popular in DevOps)

4. ๐Ÿ›  Oh My Zsh & Zsh Customization

Install Oh My Zsh

This sets Zsh as the default shell and installs config in ~/.oh-my-zsh.

5. ๐ŸŽจ Powerlevel10k Theme Setup

The default robbyrussell or agnoster themes looked boring. We installed Powerlevel10k, which is the modern DevOps choice.

Install Powerlevel10k into Oh My Zsh

Update ~/.zshrc

Reload Zsh

This triggered the Powerlevel10k configuration wizard, which saved settings into:

6. ๐Ÿ–Œ Fonts for Icons/Glyphs

Installed Nerd Fonts for proper icons:
This ensures Powerlevel10k glyphs (e.g., git icons, arrows, kube symbols) render correctly.

7. ๐Ÿ“ฆ Languages & Runtimes

Node.js (20, 22, 24 via NVM)

Add to ~/.zshrc:
Then install versions:

Go

Python 3.10 (via pyenv)


8. ๐Ÿ—„ Database Tools

Installed GUIs:
  • MySQL Workbench โ†’ MySQL management
  • pgAdmin4 โ†’ PostgreSQL management

9. โšก Verification

  • Docker works after running Docker Desktop (or Colima).
  • exec zsh loads Powerlevel10k prompt.
  • Fonts/icons render correctly with Nerd Font.
  • Node, Go, Python versions installed and switchable.
  • Database GUIs installed.

๐Ÿ”ฎ Next Steps

  • Add zsh plugins for better productivity:
  • Install them via:
  • To re-run Powerlevel10k wizard:

๐Ÿ‘‰ Do you want me to extend this doc into a step-by-step script (so you can set up a new Mac in one go), or keep it as reference notes? Got it โœ… โ€” I went through our full conversation from top to bottom and extracted every tool, language, runtime, and app we installed (or planned to install). Hereโ€™s the consolidated list:

๐Ÿ“ฆ Installed Tools & Applications (from our setup)

๐Ÿ”ง Core Utilities

  • git
  • wget
  • curl
  • jq (JSON parser)
  • yq (YAML parser)
  • tree
  • htop
  • watch
  • gnu-sed
  • gawk
  • coreutils
  • findutils

๐Ÿณ Containers & Orchestration

  • docker (CLI)
  • Docker Desktop (daemon + GUI)
  • colima (lightweight Docker alternative โ€“ optional)
  • docker-compose
  • kubectl
  • kubectx / kubens
  • stern
  • helm
  • kind
  • k9s
  • minikube

โ˜๏ธ Cloud & IaC

  • awscli
  • azure-cli
  • google-cloud-sdk
  • terraform
  • opentofu

๐Ÿ” Security & Networking

  • nmap
  • httpie
  • curlie
  • mitmproxy
  • wireguard-tools

๐Ÿ›  Monitoring & Observability

  • promtool (Prometheus tool)
  • grafana-loki

๐Ÿ“ฆ Package & Language Managers

  • pyenv (Python versions)
  • pipx
  • nvm (Node version manager)
  • nodenv (alternative Node version manager)
  • goenv (Go version manager)

๐Ÿ–ฅ๏ธ Terminals & Shell

  • iterm2
  • warp
  • terminus
  • oh-my-zsh (framework)
  • powerlevel10k (theme)
  • MesloLGS Nerd Font (for icons/glyphs)

โšก Zsh Plugins

  • zsh-autosuggestions
  • zsh-syntax-highlighting
  • zsh-completions

๐ŸŽจ IDEs & Editors

  • visual-studio-code
  • cursor (AI-powered IDE fork of VS Code)

๐ŸŒ Browsers

  • arc
  • google-chrome

๐Ÿ“ฌ Communication

  • slack
  • microsoft-outlook
  • thunderbird

๐ŸŽต Media & Productivity

  • spotify
  • vlc
  • google-drive
  • dropbox
  • rectangle (window manager)
  • alfred (productivity launcher)
  • itsycal (calendar)
  • notion
  • zoom

๐Ÿ—„๏ธ Database Tools

  • mysqlworkbench
  • pgadmin4

๐Ÿ›  Languages & Runtimes

  • Node.js (20, 22, 24 via nvm)
  • Go
  • Python 3.10 (via pyenv)

๐Ÿ‘‰ This is the complete list of everything weโ€™ve installed or configured in this chat. Do you want me to turn this into a categorized โ€œMac DevOps Bootstrap Scriptโ€ (one shell script that installs everything in one go)?

๐Ÿ”‘ macOS SSH Key Setup (with Keychain)

When connecting to Bitbucket/GitHub/GitLab via SSH, you might see:
This happens because your SSH agent has no key loaded.

1. Generate an SSH Key (if you donโ€™t already have one)

This creates:
  • Private key โ†’ ~/.ssh/ahmad.raza@example.com
  • Public key โ†’ ~/.ssh/ahmad.raza@example.com.pub

2. Add Key to macOS Keychain

Check if loaded:

3. Configure ~/.ssh/config

Edit (or create) the file:
Add:
๐Ÿ’ก This ensures:
  • The key auto-loads into Keychain.
  • Git automatically uses this key for Bitbucket.

4. Upload Public Key to Bitbucket

Copy your key:
Go to Bitbucket โ†’ Personal Settings โ†’ SSH Keys โ†’ Add Key โ†’ paste it.

5. Test Connection

Expected output:

6. (Optional) Linux Setup

If using Linux, add this to ~/.bashrc or ~/.zshrc:

โœ… Executive Summary

  • Problem: SSH agent had no key โ†’ โ€œPermission deniedโ€.
  • Fix: Load key with ssh-add and persist via Keychain.
  • Best Practice: Use ~/.ssh/config + Keychain โ†’ no more manual ssh-add.

Butbucket Setup Mac : (If SSH Key is not working)

It worked because before, your SSH agent had no key loaded, so when git tried to connect to git@bitbucket.org, it sent zero valid identities โ†’ Bitbucket rejected with Permission denied (publickey). When you ran: ssh-add ~/.ssh/ahmad.raza@org-name.co.in you explicitly loaded that private key into the running ssh-agent. Now: ssh-agent remembers the key in memory. When git makes an SSH connection, the agent presents the key to Bitbucket. Bitbucket checks the public half of that key against what you uploaded to your account, matches it, and lets you in. โœ… Why you needed ssh-add On macOS (and Linux if not configured), SSH keys arenโ€™t auto-loaded into the agent at login. Thatโ€™s why ssh-add -l was empty at first. Once you added the key, it worked fine. How to avoid running ssh-add every time macOS Keychain (recommended) ssh-add โ€”apple-use-keychain ~/.ssh/ahmad.raza@org-name.co.in And in ~/.ssh/config: Host bitbucket.org HostName bitbucket.org User git IdentityFile ~/.ssh/ahmad.raza@org-name.co.in UseKeychain yes AddKeysToAgent yes Linux (persistent agent) Add this to ~/.bashrc or ~/.zshrc: eval โ€$(ssh-agent -s)โ€ ssh-add ~/.ssh/ahmad.raza@org-name.co.in That way, your key loads automatically on login and you wonโ€™t hit this issue again. ๐Ÿ‘‰ Do you want me to give you the exact ~/.ssh/config setup so youโ€™ll never have to ssh-add manually again on your Mac?