假设我有一个从模板创建的 nginx 配置文件,我用它来配置某些主机以将服务器名称从 http 重定向到 https:
server {
listen 80;
server_name {{ server_name }};
rewrite ^ https://$server_name$request_uri? permanent;
}
假设我在同一台机器上托管了两个网站:
- 站点 A
- 站点 B
每个都有自己的服务器名称,每个都需要上面的重定向。同时假设我至少有两个单独的部署配置,每个配置都由其自己的清单文件及其 group_vars/ 文件夹表示,例如:
- 流浪的单盒
- 生产
每个使用不同的服务器名称。所以现在我有 2*2 = 4 个单独的服务器名称:
- sitea.myonebox.com
- siteb.myonebox.com
- sitea.production.com
- siteb.production.com
我不知道如何定义所有这 4 个变量。我不能在 group_vars/ 下定义两个单独的变量,因为 j2 模板只需要一个变量名 {{server_name}},所以我必须定义相同的模板两次才能使其工作。
另一种选择是将sitea和siteb作为两个单独的角色(无论如何我都会这样做),并将sever_name存储在roles/sitea/vars/main.yml中,但是该设置不考虑库存,这意味着我会减少到 2 个变量而不是 4 个。
如果没有模板重复,这是否可能,或者 Ansible 还不支持这种场景?