我们管理一套或多或少标准的系统来开展通常的托管业务:
- 权威 DNS 服务器
- 邮件交换器(具有第一阶段垃圾邮件过滤功能)
- 邮件扫描服务器(amavisd 进行内容扫描)
- 邮箱服务器(实际邮箱所在的位置,运行 IMAP/POP/webmail)
- mysql 服务器
- 网络服务器
我们已经在慢慢实施管理配置系统通过 puppet,但下一步将是自动化服务生命周期。目前,我们有一个内部开发的解决方案,基本上由各个服务器上的 cronjobs 组成,这些 cronjobs 从 MySQL 读取数据并部署新域:
- 在 DNS 中创建区域并将记录放入指向我们服务器的区域中
- 在我们的 MX 中启用到该域的中继
- 为 amavisd 添加可选的自定义域名配置
- 在邮箱服务器上创建邮件域
- 在 MySQL 中创建具有相应权限的空数据库
- 在 Web 服务器上创建目录结构、ftp 凭据和 apache vhost
99.9% 的时间我们会添加域名,0.1% 的时间我们会删除域名或以某种方式对域名进行调整 - 后者目前是通过 ssh 手动完成的。有些系统已经分布在多个服务器上(例如,域名分布在多个邮箱服务器上),有些系统将来会这样(例如 MySQL)。
我们将为我们的客户开发一个简单的 Web 界面,以便他们管理自己的域名并获取新域名,我们显然希望尽可能地消除所有人工工作。Web 界面(程序员,想想看法)将不包含任何业务逻辑,并将(可能通过类似 RESTful 的 HTTP)与另一个只执行此操作的应用程序进行通信(程序员,想想控制器)。
您是否会将业务逻辑应用程序与 Puppet 连接并使用它来管理服务?或者让我们直接与系统对话?(例如,mysql 配置通过 SQL 完成,proftpd 帐户 + 邮件中继数据 + 反垃圾邮件设置存储在数据库中,apache vhosts 可以由可以执行创建/配置/清除和类似操作的简单代理来处理)?
大型托管商店如何管理此类内容?此外,欢迎提供任何其他建议。