# homelab-ansible Ansible playbook to align my homelab VMs — Alpine & Debian. ## Roles | # | Role | Purpose | | --- | --------- | ------------------------------------------------------------- | | 1 | `ufw` | Install UFW, deny incoming by default, allow only Tailscale | | 2 | `repos` | Set Alpine repos to `edge` | | 3 | `upgrade` | Upgrade all packages (handles Tailscale SSH drops gracefully) | ## Usage ```sh # Full playbook ansible-playbook homelab.yml # Single role ansible-playbook homelab.yml --tags ufw # Dry-run ansible-playbook homelab.yml --check --diff ``` ## Inventory - `inventory/tailscale_inventory.py` — dynamic inventory from local `tailscale status`, filtered by `tag:homelab` - `inventory/static_groups.yml` — static group assignments (Alpine vs Debian) ## Vars Per-role defaults live in `roles/*/defaults/main.yml`. Per-group overrides in `group_vars/`.