## 1. Variable Migration - [x] 1.1 Remove `trojan_domain` and `certbot_email` from `group_vars/all.yml` (or set to empty strings as fallback defaults) - *Note: Variables already defined as empty strings in `roles/trojan/defaults/main.yml`, no change needed in `group_vars/all.yml`.* ## 2. Inventory Update - [x] 2.1 Update `inventory/hosts.yml.example` to show per-host `trojan_domain` and `certbot_email` configuration ## 3. Role Validation - [x] 3.1 Add `assert` task in `roles/trojan/tasks/main.yml` to fail early if `trojan_domain` or `certbot_email` is undefined/empty - [x] 3.2 Verify all existing `trojan_domain` and `certbot_email` references in trojan role work correctly with host variables - *Note: All references use `{{ trojan_domain }}` and `{{ certbot_email }}`, Ansible variable resolution automatically handles host variables without code changes.* ## 4. Documentation - [x] 4.1 Update `README.md` configuration section to reflect per-host domain setup ## 5. Validation - [x] 5.1 Run `ansible-playbook --syntax-check` to validate playbook integrity