当前 trojan_domain 和 certbot_email 定义在 group_vars/all.yml 中,所有 trojan 组内的服务器共用同一域名申请 Let's Encrypt 证书。实际部署中,每台服务器通常有独立的公网 IP 和域名,需要分别为每台主机配置证书。
Goals:
Non-Goals:
trojan_domain 和 certbot_email 从 group_vars/all.yml 移除,改由用户在 inventory/hosts.yml 中按主机定义,trojan role 无需修改引用方式即可生效。host_vars/ 目录文件化配置 — 对于少量主机,直接在 hosts.yml 中内联定义更直观,无需额外目录。group_vars/all.yml 中保留 trojan_domain: "" 和 certbot_email: "" 作为空默认值,当某台主机未定义时,playbook 可在 role 中通过 assert 模块报错,避免使用错误域名。group_vars/all.yml 中配置域名,迁移时可能遗漏
inventory/hosts.yml.example 中增加显眼的 per-host 域名示例;在 role 中增加 assert 前置检查,给出清晰错误提示group_vars/all.yml 中若保留非空默认值,会被所有主机继承,导致 host variable 无法生效
group_vars/all.yml 中的默认值设为空字符串,确保用户必须在 inventory 中显式配置group_vars/all.yml 中移除 trojan_domain 和 certbot_email(或设为空字符串)inventory/hosts.yml 中为每台 trojan 服务器添加 trojan_domain 和 certbot_email