如何自动化服务器安装?哪些基础设施/系统适合我们的需求?
我们有 10 多台物理服务器和 100 多台虚拟机,主要是 LAMP。不是太多,但也不是任何可以自己继续工作的东西。所有服务器都有 KVM 虚拟化。我们为经常修改的客户托管各种定制应用程序。因此,这不是一个需要扩展的应用程序。项目团队直接与客户和虚拟机合作,这是一项要求。
我们经常遇到的问题是重新安装虚拟机/机器会变得很棘手,因为没有人控制它们最近的更改,这会带来不稳定的风险,人们会尽可能地推迟它,并且随着时间的推移问题会变得更大。
我想至少每 3 个月根据需要建立一个重新安装程序。重新安装应从代码存储库和备份开始。这不应该是虚拟机重复。
我们估计,如果手动完成,在当前设置中每 3 个月将花费我们大约 6 个人工月。我们如何才能减少这个时间并增加过程的可重复性?
问题是什么软件可以帮助我们自动完成这项任务。它应该尽可能轻。我们不需要自动节点分配。我们只需要重新安装以尽可能自动化。我们假设每次重新安装都有人工监督。
我们的节点主要是 LAMP,有两个系统具有超过 1TB 的结构化数据库数据、几个 >200GB 和大约 50 个小型自定义 VM。我们可以轻松地安排每个系统的计划停机时间,因此这不是重新安装期间的高可用性问题。
我们只需要尽可能地自动重新安装。
您需要像 Ansible、Saltstack、Puppet 或 Chef 这样的配置管理框架。
这是用于管理和应用配置的工具。但是,选择实际工具只是项目的一小部分。
您需要设计和部署流程,通过此工具管理对基础架构的所有更改。
这需要:
您还应该考虑统一软件堆栈基础架构。
如果每个虚拟机都有一些不同的软件配置,你要么有
这些因素中的任何一个都会增加大量的维护开销,最终结果可能会变得与您当前的情况一样痛苦。
您的云是否有 API 密钥?
大多数云都有一键式 LAMP 图像,例如
Vultr:https ://www.vultr.com/apps/lamp/
数字海洋:https ://marketplace.digitalocean.com/apps/lamp
Linode:https ://www.linode.com/docs/guides/lamp-stack-marketplace-app/
如果没有,我的绝对首选是 VestaCP https://vestacp.com/install/
和https://hestiacp.com/
两者都添加了 apache 后端、nginx 前端、MySQL/mariadb/postgres 和 php/php-fpm。所有选项也是。
对于更新,我会创建一个单独的服务器,将一个通用的 SSH 公钥放入
/root/.ssh/authorized_keys
该单独的服务器,它可以自动登录到每个服务器,例如:这几乎是 Terraform、Kubernetes 等 DIY。
同样在 GitHub 上,还有大量特定于云的指南,例如:
另一个数字海洋:https ://github.com/ethanbeyer/DigitalOcean-Droplet-Setup
AWS 一个:https ://github.com/elionaz/aws-LAMP/blob/master/install_lamp.sh