Skip to content

Device Provisioning

Ansible-based setup for macOS and Linux workstations.


🎯 Two-Phase Setup

Phase 1: Bootstrap (SSH + Secrets)

Run the encrypted bootstrap bundle to get basic access:

# On new device
age -d device-bootstrap.age | bash

This installs:

  • SSH keys
  • Infisical credentials
  • coder-core repository
  • Basic SSH config

Phase 2: Full Provisioning (Ansible)

Run the playbook to install all development tools:

# From any device with ansible installed
cd ~/coder-core/ansible
ansible-playbook playbooks/device-setup.yml -i inventory/devices.yml --limit mac-mini

📦 What Gets Installed

Category Tools
Core CLI git, curl, jq, htop, ripgrep, fd, fzf, tmux
Security age, infisical
DevOps terraform, rclone, docker
Languages node, python3
Shell zsh + aliases

🖥️ Supported Devices

Device OS Tailscale IP Status
macbook-pro macOS ARM64 localhost ✅ Primary
mac-mini macOS Intel 100.98.13.38 ✅ Active
linux-workstation Ubuntu 100.123.112.36 ✅ Active

📋 Commands

# Setup Mac Mini
ansible-playbook playbooks/device-setup.yml -i inventory/devices.yml --limit mac-mini

# Setup Linux workstation
ansible-playbook playbooks/device-setup.yml -i inventory/devices.yml --limit linux-workstation

# Setup all macOS devices
ansible-playbook playbooks/device-setup.yml -i inventory/devices.yml --limit macos_devices

# Essentials only (skip dev tools)
ansible-playbook playbooks/device-setup.yml -i inventory/devices.yml --limit mac-mini -e "install_dev_tools=false"

🔧 Customization

Edit ansible/inventory/devices.yml to:

  • Add new devices
  • Change packages per device
  • Modify SSH hosts

Edit ansible/roles/workstation/vars/*.yml to:

  • Add OS-specific packages
  • Configure Homebrew casks (macOS)
  • Set default tools