# Role: base ## Description Installs core system packages and utilities required by all other roles. This is the foundation role that should be applied to all managed hosts. ## Requirements - Ansible 2.9+ - Debian/Ubuntu systems - Root or sudo access ## Installed Packages ### Base Utilities - curl, wget - Download tools - unzip - Archive extraction - xclip - Clipboard utility - tree - Directory visualization ### Network & Admin Tools - net-tools - Network configuration - ufw - Uncomplicated Firewall - mailutils - Email utilities ### Modern CLI Tools - jq - JSON processor - yq - YAML processor (from apt or GitHub binary) - ripgrep - Fast text search - fd-find - Fast file finder ## Configuration Tasks - Sets system timezone (default: UTC) - Configures system locale (default: en_US.UTF-8) - Creates Ansible temporary directory with proper permissions - Creates fd symlink for Ubuntu compatibility ## Variables | Variable | Default | Description | |----------|---------|-------------| | `timezone` | `UTC` | System timezone | | `locale` | `en_US.UTF-8` | System locale | ## Dependencies None - this is the foundation role. ## Example Playbook ```yaml - hosts: all roles: - role: base timezone: America/Toronto locale: en_US.UTF-8 ``` ## Tags - `base`: All base tasks - `security`: Security-related tasks ## Notes - This role should be applied before all other roles - yq is installed from apt if available, otherwise from GitHub binary - fd-find is symlinked to fd for compatibility across distributions - UFW firewall is installed but not enabled (handled by SSH role)