Transform any standard Linux terminal into a modern, high-performance DevOps workstation. This project automates the deployment of a fully-loaded Zsh environment with Ansible or a simple Bash script.
- Dynamic Prompt: Powered by Starship with custom OS detection (Debian 🌀, Ubuntu, etc.)
- Smart History: Timestamps included and duplicates removed for better traceability
- Productivity Aliases:
- Cloud/K8s:
k(kubectl),tf(terraform),h(helm) - Ansible:
a(ansible),ap(ansible-playbook) - Visual:
ls&llmapped toeza/exawith icons
- Cloud/K8s:
- Auto-Completion: Context-aware suggestions and syntax highlighting
- Fast Syntax Highlighting: Real-time shell syntax validation
chmod +x runme.sh
./runme.shThis installs everything locally:
- Zsh + Oh My Zsh
- Starship prompt
- Syntax highlighting & auto-completion plugins
- Sets Zsh as default shell
Supported OS: Debian/Ubuntu (apt), RHEL/CentOS (yum)
For deploying across multiple machines:
Step 1: Configure your hosts
Edit ansible/hosts.ini with your target machines
Step 2: Run the setup playbook
ansible-playbook -i ansible/hosts.ini ansible/setup_term.ymlOptional: Run with Sudo password prompt
ansible-playbook -i ansible/hosts.ini ansible/setup_term.yml --ask-become-pass- OS: Debian, Ubuntu, RHEL, CentOS
- For Ansible: Python 3.6+, Ansible 2.9+
- Shell: Bash (will be replaced with Zsh)
- Terminal Emulator: Supports Nerd Fonts (e.g., JetBrainsMono, FiraCode)
mod_term/
├── ansible/
│ ├── hosts.ini # Target hosts configuration
│ ├── setup_term.yml # Main setup playbook
│ ├── start.yml # Startup configuration
│ └── tasks_per_user.yml # Per-user customization tasks
├── files/
│ ├── .zshrc # Hardened shell configuration
│ └── starship.toml # Cross-shell prompt design
├── runme.sh # Local installation script
└── README.md # This file
- Detects Git status, Kubernetes context, Terraform workspace, language versions
- Minimal and fast with custom themes
- Works across all major shells (Bash, Zsh, Fish)
| Alias | Command | Purpose |
|---|---|---|
k |
kubectl | K8s operations |
tf |
terraform | IaC management |
h |
helm | Helm charts |
a |
ansible | Automation |
ap |
ansible-playbook | Run playbooks |
ls |
eza -la | Enhanced directory listing |
ll |
eza -la | Long format listing |
- fast-syntax-highlighting: Real-time syntax validation as you type
- zsh-autocomplete: Intelligent command completion
- zsh-autosuggestions: Fish-like history-based suggestions
Edit files/.zshrc and add your aliases:
alias mycommand='actual command'Edit files/starship.toml to customize the Starship prompt appearance and modules.
Use ansible/tasks_per_user.yml to apply user-specific configurations across multiple hosts.
Issue: Nerd Font icons not displaying
Solution: Set a Nerd Font in your terminal emulator settings (e.g., JetBrainsMono Nerd Font)
Issue: Zsh not set as default shell
Solution: Run chsh -s $(which zsh) manually
Issue: Ansible permission denied
Solution: Add --ask-become-pass flag or configure passwordless sudo
Issue: runme.sh permission denied
Solution: chmod +x runme.sh then ./runme.sh
Issue: Oh My Zsh plugins not loading
Solution: Ensure ~/.oh-my-zsh/custom/plugins directory exists with cloned plugins
This project is open source. Feel free to fork and customize!
Found an issue or have improvements? Submit a pull request or open an issue!
