我的客户希望在云中自动配置他们的测试和开发环境。他们的愿景是,他们将能够在 Web 界面中输入如下信息:
- 服务器数量
- CPU 数量
- 内存
- 贮存
- 网络端口数
- 备份要求(如果有)
- 操作系统版本
- 软件堆栈(可能到中间件)
- 负载均衡器
我想这个想法是编写一个脚本,从这里获取信息并使用云 API 来配置云中的环境。问题是——我们可以自动化多少?操作系统版本和中间件可以捆绑在一个 VM 映像中,然后可以进行部署。云 API 是否允许设置 VM 实例,然后自动向其部署映像?您能否配置负载平衡器和防火墙设置?
我的客户希望在云中自动配置他们的测试和开发环境。他们的愿景是,他们将能够在 Web 界面中输入如下信息:
我想这个想法是编写一个脚本,从这里获取信息并使用云 API 来配置云中的环境。问题是——我们可以自动化多少?操作系统版本和中间件可以捆绑在一个 VM 映像中,然后可以进行部署。云 API 是否允许设置 VM 实例,然后自动向其部署映像?您能否配置负载平衡器和防火墙设置?
是的!(好吧,见下文)
使用来自任何主要提供商的 API,您可以编排部署,选择服务器、CPU、RAM、存储、操作系统版本和负载平衡器的数量。不过,您确实必须与每个提供商的基本图像和风格保持一致。
每个都有自己的备份系统,具体取决于您正在寻找的粒度。
至于“网络端口数”,我没见过这样的。您通常只能获得一个面向公众的网络、一个内部(数据中心)网络,如果您愿意,还可以选择一个隔离网络。
几乎所有的提供程序都允许您拍摄当前正在运行的服务器的快照(映像),以便您可以再次重新部署相同的映像。您也可以使用 API 自动执行此操作。
不过,就软件堆栈而言,您希望使用一些配置管理软件(Chef、SaltStack、Ansible、Puppet甚至只是 Fabric 脚本)来帮助您以自动化方式部署软件。基础设施即代码让生活变得更好。
事实上,回到原点,使用salt-cloud之类的软件,您可以为您的基础架构以及要安装在每个盒子上的软件布局地图。
OpenStack Heat和AWS Formation Templates也将这一点提升到另一个层次,用于布置基础设施模板,甚至与那些相同的配置管理套件集成。