将Terraform与Packer结合是一种很好的选择。HashiCorp成功创造了另一个工具,它改变了我们配置和提供服务器的方式。
配置管理工具的主要目标是使服务器始终处于所期望的状态。如果一台Web服务器停止工作,那么它会被再次启动。如果修改了一个配置文件,那么它会被恢复。无论服务器发生了什么情况,都会被恢复到所需的状态。例外的情况是,有些问题是无法修复的。如果硬盘发生故障,配置管理就无能为力了。
配置管理工具的问题在于,它们是被设计用来处理物理服务器,而不是虚拟服务器。当可以在几秒钟内创建一个新的虚拟服务器时,为什么要修复一个有故障的虚拟服务器呢?Terraform比任何人都更理解云计算是如何工作的,并且支持这样的想法,那就是我们的服务器不再是宠物了。它们是“牛”。Terraform能够确保你的所有资源都可用。
当服务器出现问题时,它不会尝试去修复该问题。相反,Terraform会销毁它,并会根据我们选择的镜像创建一个新的服务器。
这是否意味着Puppet、Chef、Ansible和其他类似的工具就没有用了呢?在云中使用它们过时了吗?有些工具比其他工具更过时。Puppet和Chef的设计是在每台服务器上运行一个代理,不断监视其状态,并在事情偏离正轨时对其进行修改。当开始将服务器视为“牛”时,这些工具就用不上了。Ansible比其他工具更有用,因为可以使用它来配置服务器,而不是监视服务器。因此,当创建镜像时,它可能非常有用。(www.xing528.com)
可以将Ansible和Packer结合起来。Packer创建一个新的虚拟机,Ansible将为虚拟机配置所需的一切,并将其留给Packer以创建镜像。如果服务器的配置很复杂,那么意义会更大。问题是服务器的配置应该有多复杂?使用AWS,传统上在服务器上运行的许多资源现在都是服务。我们不会在每台服务器上设置防火墙,但会使用VPC和安全组服务。由于不用登录到计算机来部署软件,因此我们不会创建大量的系统用户。Swarm会为我们做这些。我们不再安装Web服务器和运行时的依赖,它们都在容器里。使用配置管理工具将一些东西安装到虚拟机中,并将其转换为镜像,这么做是否有真正的好处?通常情况下,答案是否定的。我们需要的东西也可以很容易使用Shell命令来安装和配置。“牛”的配置管理可以,而且通常应该使用bash来完成。
我可能太苛刻了。如果你知道什么时候使用以及用于什么目的,那么Ansible仍然是一款很好的工具。在服务器成为镜像之前,如果是希望使用Ansible而不是bash来安装和配置它,那么就去做吧。如果试图使用它来控制节点并创建AWS资源,那么你就错了。Terraform会做得更好。如果你认为最好是配置一个正在运行的节点,而不是实例化已经包含所有内容的镜像,那么你必须有更多的耐心。
最后的建议是,如果你想要控制组成集群的所有部分,或者你已经有了一组需要遵循的规则,那么可以使用Terraform和Packer的组合。准备好花些时间来调整配置,直到达到最佳的设置。与AWS不同,无论是好是坏,都迫使我们处理许多类型的资源,DigitalOcean是很简单的。你创建droplet,添加一些浮动IP地址,就这样。你可能想要在机器上安装防火墙。做这件事情,最好的方法是在使用Packer创建快照时这样做。当使用Swarm网络时,是否需要防火墙是值得商榷的,这个问题稍后再来讨论。
因为在DigitalOcean中没有类似于Docker的产品,所以Terraform赢了。DigitalOcean很简单,这种简单是通过Terraform的配置反映出来的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。