ansible/group_vars/all.yml.
Architecture Philosophy
The key principle is scalability through data, not code. Rather than creating dozens of specialized roles, this setup uses:- Centralized package lists in
group_vars/all.yml - Universal
commonrole that handles most installations - Specialized roles only for complex configurations (like GNOME settings)
Do NOT create a new Ansible role for every new application. Use the centrally managed lists instead.
Playbook Structure
The main playbook isansible/site.yml:
Available Roles
Common Role
Handles all standard package installations:- External APT repositories (Chrome, VSCode, Hashicorp, etc.)
- APT package installation
- Snap package installation
- Passwordless sudo configuration
GNOME Role
Configures GNOME desktop environment:- Dark mode preference
- Clock settings (show date, hide seconds)
- Power management (disable sleep on AC)
When to Create a New Role
Only create dedicated roles for software that requires:- Complex configuration files
- Multi-step templating
- Different package managers (beyond standard APT/Snap)
- Extensive customization that cannot be handled by simple package installation
group_vars/all.yml.