An open-source Ansible playbook that automates the installation and configuration of essential DevOps tools on Ubuntu systems. Set up your development environment in minutes with a single command!
Originally developed by Clouddrove, now open-source and community-driven.
- π― One-Command Setup: Install 20+ DevOps tools with
make setup - π§© Modular Design: Well-organized Ansible roles for easy customization
- π Secure: GPG key verification for all packages
- π Well Documented: Comprehensive guides for beginners and experts
- π§ͺ Tested: Linted, tested, and production-ready
- π Beginner Friendly: Clear documentation and helpful error messages
- Git - Version control (configured with your details)
- Docker & Docker Compose - Container platform
- AWS CLI v2 - Amazon Web Services CLI
- Azure CLI - Microsoft Azure cloud management
- GCP CLI (gcloud) - Google Cloud Platform CLI
- Kubectl - Kubernetes command-line tool
- Helm - Kubernetes package manager
- k9s - Kubernetes terminal UI
- Terraform - Infrastructure as code (via tfswitch)
- Ansible - Automation and configuration management
- Visual Studio Code - Industry-standard code editor
- Lens - Kubernetes IDE
- Google Chrome - Web browser
- Brave Browser - Privacy-focused browser
- Tor Browser - Anonymous browsing
- Slack - Team collaboration
- Zoom - Video conferencing
- Telegram - Messaging app
- Discord - Developer communities
- Microsoft Teams - Enterprise communication
- SSH Keys - Secure shell authentication
- Oh My Zsh - Enhanced Zsh shell with plugins
- Operating System: Ubuntu 20.04 or later
- Permissions: Sudo/root access
- Internet: Active internet connection
- Ansible: Will be auto-installed if missing (via Makefile)
π Using macOS? This playbook requires Ubuntu Linux. See TESTING_ON_MAC.md for testing options using VMs or containers.
# Clone the repository
git clone <repository-url>
cd machine-setup
# Run setup (handles everything automatically)
make setupThat's it! The Makefile will:
- Check and install Ansible if needed
- Verify your system
- Run the playbook
- Guide you through the setup
# 1. Install Ansible
sudo apt update
sudo apt install -y ansible
# 2. Run the playbook
ansible-playbook -i ./inventories/hosts.ini ./playbooks/tools_setup.ymlDuring setup, you'll be prompted for:
- Git Username - Your Git username (e.g.,
john.doe) - Git Email - Your Git email address (e.g.,
john.doe@example.com)
Note: Your hostname will be automatically generated as DEV-{random_number} (e.g., DEV-45678). You can customize this by setting the hostname_prefix variable.
The project includes a Makefile with helpful commands:
make help # Show all available commands
make setup # Run the Ansible playbook (main command)
make lint # Run ansible-lint on all files
make syntax-check # Check playbook syntax
make test # Run all tests (lint + syntax)
make install-pre-commit # Install pre-commit hooks
make run-pre-commit # Run pre-commit on all files
make clean # Clean up temporary files
make info # Display system information
# Testing on Mac (see TESTING_ON_MAC.md)
make test-multipass # Test using Multipass (easiest)
make test-docker # Test using Docker
make test-vagrant # Test using Vagrant
make test-help # Show testing optionsBy default, hostnames are set as DEV-{random_number}. To use a custom prefix:
ansible-playbook -i ./inventories/hosts.ini ./playbooks/tools_setup.yml -e hostname_prefix=MYORGYou can install only specific tools using tags:
# Only install DevOps tools
ansible-playbook -i ./inventories/hosts.ini ./playbooks/tools_setup.yml --tags devops-tools
# Only install browsers
ansible-playbook -i ./inventories/hosts.ini ./playbooks/tools_setup.yml --tags web-browsers
# Only install communication tools
ansible-playbook -i ./inventories/hosts.ini ./playbooks/tools_setup.yml --tags communication-toolsEdit roles/browsers/defaults/main.yml to select which browsers to install:
browsers:
- chrome
# - brave # Comment out to skip
# - tor # Comment out to skipmachine-setup/
βββ Makefile # Main commands (make setup, make lint, etc.)
βββ playbooks/
β βββ tools_setup.yml # Main Ansible playbook
βββ roles/ # Ansible roles (modular components)
β βββ devops/ # DevOps tools (Git, Docker, AWS, etc.)
β βββ browsers/ # Web browsers
β βββ communication-tools/ # Slack, Zoom, Telegram
β βββ system-configuration/ # SSH Keys, Oh My Zsh
βββ inventories/
β βββ hosts.ini # Inventory file (target hosts)
βββ .ansible-lint # Ansible lint configuration
βββ .pre-commit-config.yaml # Pre-commit hooks
βββ requirements.yml # Ansible collections requirements
βββ .github/
βββ workflows/ # GitHub Actions CI/CD
- Fast internet: ~15 minutes
- Slow internet: ~30 minutes
The playbook shows progress for each tool being installed.
- π QUICKSTART.md - Step-by-step guide with troubleshooting
- π CONTRIBUTING.md - Learn how to contribute
- π‘ Run
make helpto see all available commands
- π§ CODE_REVIEW.md - Technical documentation and architecture
- π§ͺ Customize roles in
roles/*/defaults/main.yml - ποΈ Modify tasks in
roles/*/tasks/main.yml
Issue: "Ansible not found"
# Solution: Install Ansible
sudo apt update && sudo apt install -y ansibleIssue: "Permission denied"
# Solution: Make sure you have sudo access
sudo make setupIssue: "Connection refused"
# Solution: Check inventories/hosts.ini
# Should contain: localhost ansible_connection=localIssue: Installation takes too long
# This is normal! The playbook downloads many tools.
# Be patient, it typically takes 15-30 minutes.- π Check QUICKSTART.md for detailed troubleshooting
- π Open an issue if you find a bug
- π¬ Ask questions in discussions
- π§ For security issues, see SECURITY.md
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Quick contribution steps:
- Fork the repository
- Create a feature branch
- Make your changes
- Run
make lintandmake test - Submit a pull request
- π All packages use GPG key verification
- π‘οΈ Only official package sources are used
- π SSH keys generated with secure defaults (RSA 4096)
- π§Ή Temporary files are cleaned up after installation
For security concerns, please see SECURITY.md.
This project maintains high code quality standards:
- β Ansible Lint: All code is linted
- β Pre-commit Hooks: Automatic checks on commit
- β GitHub Actions: CI/CD pipeline for testing
- β Best Practices: Follows Ansible conventions
Run make lint to check code quality locally.
This project is licensed under the MIT License - see the LICENSE file for details.
- Originally developed by Clouddrove
- Built with Ansible
- Community-driven and open-source
- β Production Ready: Tested and stable
- β Open Source: MIT Licensed
- β Maintained: Active development
- β Documented: Comprehensive guides
If you find this project useful, please consider giving it a β on GitHub!
Made with β€οΈ by the open-source community
For questions, suggestions, or contributions, please open an issue or pull request!