Skip to content

shibbirmcc/development-environment-management-scripts

Repository files navigation

Development Environment Management

Ansible-based automation for setting up complete development environments on Ubuntu and macOS. Run a single playbook to install all your tools, SDKs, and applications with consistent versions and configurations.

Quick Start

# 1. Bootstrap (install Ansible)
./setup.sh

# 2. Run full setup
ansible-playbook site.yml

# 3. Or use a profile
ansible-playbook site.yml -e @vars/profiles/developer.yml

Supported Operating Systems

OS Versions Package Manager
Ubuntu 24.04 LTS, 25.04 apt
macOS 13+ (Ventura, Sonoma, Sequoia) Homebrew

What Gets Installed

Core Tools

  • Zsh + Oh-My-Zsh with custom theme
  • Git, curl, wget, htop, tmux, jq, fzf, ripgrep

Containers & Orchestration

  • Docker (Engine on Ubuntu, Desktop on macOS)
  • kubectl, Helm, k9s
  • MicroK8s (Ubuntu only, optional)

Programming SDKs

  • Java via SDKMAN! (Temurin JDK 21)
  • Gradle via SDKMAN!
  • Node.js via asdf
  • Python via pyenv
  • Go via asdf

Development Tools

  • VS Code + extensions
  • IntelliJ IDEA Community Edition
  • GitHub CLI + GitHub Desktop
  • DBeaver (database client)
  • Terraform, AWS CLI

Applications

  • Communication: Slack, Teams, Zoom, Signal
  • Browsers: Chrome, Firefox
  • Utilities: KeePassXC, Flameshot, FileZilla, Postman

Profiles

Profile Description
minimal.yml Core tools + shell only
developer.yml Full development setup (default)
devops.yml Infrastructure & platform engineering
data-science.yml ML/AI focused with GPU drivers
# Use a specific profile
ansible-playbook site.yml -e @vars/profiles/devops.yml

Selective Installation

Use tags to install specific components:

# Only containers
ansible-playbook site.yml --tags docker,kubernetes

# Only SDKs
ansible-playbook site.yml --tags sdks

# Skip communication apps
ansible-playbook site.yml --skip-tags communication

# List all available tags
ansible-playbook site.yml --list-tags

Available Tags

Tag Components
core Essential packages
shell Zsh, Oh-My-Zsh
docker Docker Engine/Desktop
kubernetes, k8s kubectl, Helm, k9s
sdks All programming SDKs
java Java + Gradle
python Python via pyenv
nodejs Node.js via asdf
golang Go via asdf
ide VS Code, IntelliJ
terraform Terraform
aws AWS CLI
communication Slack, Teams, Zoom
browsers Chrome, Firefox
utilities KeePass, Postman, etc.

Configuration

Edit inventories/group_vars/all.yml to customize:

# SDK versions
sdks:
  java:
    enabled: true
    version: "21.0.2-tem"
  python:
    enabled: true
    version: "3.12.0"
  nodejs:
    enabled: true
    version: "22.11.0"

# Feature flags
install_docker: true
install_kubernetes: true
install_ml_tools: false

Dry Run

Preview changes without applying:

ansible-playbook site.yml --check --diff

Directory Structure

.
├── site.yml                    # Main playbook
├── setup.sh                    # Bootstrap script
├── ansible.cfg                 # Ansible configuration
├── inventories/
│   └── group_vars/all.yml      # Global configuration
├── roles/                      # Ansible roles
│   ├── common/                 # Core packages
│   ├── shell/                  # Zsh setup
│   ├── docker/                 # Docker
│   ├── kubernetes/             # K8s tools
│   ├── java/                   # Java SDK
│   └── ...
├── vars/profiles/              # Profile presets
│   ├── minimal.yml
│   ├── developer.yml
│   ├── devops.yml
│   └── data-science.yml
└── legacy/                     # Original bash scripts

Environment Management

SDK configurations are stored in ~/.environments/:

  • .java - Java environment
  • .python - Python environment
  • .nodejs - Node.js environment
  • .golang - Go environment

The loader.sh script sources all environment files automatically in your shell.

Adding a New OS

To add support for a new OS (e.g., Fedora):

  1. Create task files: roles/<role>/tasks/fedora.yml
  2. Create variable files: roles/<role>/vars/Fedora.yml
  3. No changes needed to main playbooks - OS routing is automatic

Legacy Scripts

Original bash scripts are preserved in legacy/ for reference.

License

MIT License. See LICENSE for details.

About

Scripts to manage different dev tools in mac and Ubuntu

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •