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:
brew install git wget curl jq yq tree htop watch gnu-sed gawk coreutils findutils

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:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock.

Solution:

  • Installed Docker Desktop (daemon + GUI) via Homebrew:
    brew install --cask docker
    
  • Alternative: Colima for a lightweight Docker runtime:
    brew install colima
    colima start
    

3. ๐ŸŒ Browsers & Terminals

Installed additional tools:
brew install --cask arc terminus warp
  • 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

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
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

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
  ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

Update ~/.zshrc

ZSH_THEME="powerlevel10k/powerlevel10k"

Reload Zsh

exec zsh
This triggered the Powerlevel10k configuration wizard, which saved settings into:
~/.p10k.zsh

6. ๐Ÿ–Œ Fonts for Icons/Glyphs

Installed Nerd Fonts for proper icons:
brew install --cask font-meslo-lg-nerd-font
This ensures Powerlevel10k glyphs (e.g., git icons, arrows, kube symbols) render correctly.

7. ๐Ÿ“ฆ Languages & Runtimes

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

brew install nvm
mkdir ~/.nvm
Add to ~/.zshrc:
export NVM_DIR="$HOME/.nvm"
[ -s "$(brew --prefix nvm)/nvm.sh" ] && \. "$(brew --prefix nvm)/nvm.sh"
Then install versions:
nvm install 20
nvm install 22
nvm install 24
nvm alias default 22

Go

brew install go

Python 3.10 (via pyenv)

brew install pyenv
pyenv install 3.10.14
pyenv global 3.10.14

8. ๐Ÿ—„ Database Tools

Installed GUIs:
brew install --cask mysqlworkbench pgadmin4
  • 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:
    # In ~/.zshrc
    plugins=(
      git
      zsh-autosuggestions
      zsh-syntax-highlighting
    )
    
  • Install them via:
    brew install zsh-autosuggestions zsh-syntax-highlighting
    
  • To re-run Powerlevel10k wizard:
    p10k configure
    

๐Ÿ‘‰ 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:
Permission denied (publickey).
This happens because your SSH agent has no key loaded.

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

ssh-keygen -t ed25519 -C "ahmad.raza@example.com" -f ~/.ssh/ahmad.raza@example.com
This creates:
  • Private key โ†’ ~/.ssh/ahmad.raza@example.com
  • Public key โ†’ ~/.ssh/ahmad.raza@example.com.pub

2. Add Key to macOS Keychain

ssh-add --apple-use-keychain ~/.ssh/ahmad.raza@example.com
Check if loaded:
ssh-add -l

3. Configure ~/.ssh/config

Edit (or create) the file:
nano ~/.ssh/config
Add:
Host bitbucket.org
    HostName bitbucket.org
    User git
    IdentityFile ~/.ssh/ahmad.raza@example.com
    UseKeychain yes
    AddKeysToAgent yes
๐Ÿ’ก This ensures:
  • The key auto-loads into Keychain.
  • Git automatically uses this key for Bitbucket.

4. Upload Public Key to Bitbucket

Copy your key:
cat ~/.ssh/ahmad.raza@example.com.pub
Go to Bitbucket โ†’ Personal Settings โ†’ SSH Keys โ†’ Add Key โ†’ paste it.

5. Test Connection

ssh -T git@bitbucket.org
Expected output:
authenticated via ssh key.
You can use git to connect to Bitbucket!

6. (Optional) Linux Setup

If using Linux, add this to ~/.bashrc or ~/.zshrc:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/ahmad.raza@example.com

โœ… 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?