trojan_domain and certbot_email from group_vars/all.yml (or set to empty strings as fallback defaults)
roles/trojan/defaults/main.yml, no change needed in group_vars/all.yml.inventory/hosts.yml.example to show per-host trojan_domain and certbot_email configurationassert task in roles/trojan/tasks/main.yml to fail early if trojan_domain or certbot_email is undefined/emptytrojan_domain and certbot_email references in trojan role work correctly with host variables
{{ trojan_domain }} and {{ certbot_email }}, Ansible variable resolution automatically handles host variables without code changes.README.md configuration section to reflect per-host domain setupansible-playbook --syntax-check to validate playbook integrity