从目前来看,其实还是有许多客户在把鸡蛋放在一个篮子里的。从云逐渐从实验品到消费品的发展情况来看,多云管理实为大势所趋。试想一下这个场景,国内某客户业务需求 3 个不同环境来进行 dev,test,prod 。他们希望 dev/test 放在国内比较便宜且够用的云厂商或者本地 openstack 环境,把 prod 放在 Azure 上,纷繁的 cli 和不同格式的部署方法实在是头疼。在这种情况下,有的客户就选择就选择一个供应商,并根据业务需求不同分不同 VM/PAAS 服务来分离业务场景。这样有好有坏,好处可能可以达成某个厂商的 discount, 所有管理运维成为都依赖于该厂商 API,简化人员和日常管理成本。坏处也一样,业务依赖以及平台绑定。
从技术角度来说,其实大部分的云平台都已经提供了 API。很多的部署和运维都是可以采用 rest api 或者 wrapper 去做的。这也是为什么有那么多多云管理厂商的背后逻辑。只要整合好所有流行厂商的 API,抽象好所有的操作,是不是就等于统一管理了?
说来简单,真正做好这件事的软件,目前说实话,还是没有的。一些 rackspace, rightscale 的 cloud management tool 用起来确实不给力,并没有做到统一管理让 infra 成为 code 的目的。
题外话,从目前看来,我觉得以 cloud foundry 如果能以多云为发展方向,可能是可以发展的很好的。完全抽象隔离底层 VM/ 硬件,纯以 APP/CODE 驱动。
不过这个就脱离 Infra as code 的范畴了。
言归正传,如何才能更好的统一管理,怎么使用适当的软件去做?这里我推荐一下 apache 的 jcloud 和 hashicorp 的 terraform。
点击进入 Jcloud 官网, apache 的品质可以放心,java 的 code base 也让客制化变得很容易。然而由于没有很多 Azure Provider。我这里就不多演示了。
我们主要来讲讲 Terraform。Terraform 的官网介绍这款软件用的是如下字眼: Terraform 能让你安全的有预见性的创建,改变,提升生产的 infra。只要通过一些配置,就可以管理。你可以和你的同事一起编写你的 infra 用 code 的形 式。
听起来和 Azure 的 arm template 理念一致。那实际效果如何? 如其官网所列,一些知名常用的 Cloud Provider 都已经支持了。比如:Aws/digitalocean/docker/google cloud/heroku/Azure/openstack/vmware --- and aliyun :)
这样,我们就可以帮助客户一起实现多云管理,在客户已经使用 AWS/ALI 的情况下推 Azure 了 LOL。
关于使用效果,如果各位有兴趣可以通过点击这里 查看