Chef和Puppet引领开源云自动化

IT专业人员越来越多地转向Chef和Puppet开源云自动化和编排。但是其他选项,如TOSCA,也值得我们探索。

部署软件不是一件简单的事,而在面向服务架构、web服务、微服务和云的时代则更为复杂。虚拟化提出了新的挑战,赋予应用程序和服务器新的角色。基本的软件操作工具正在转变成自动化和流程编排工具,而开源软件则充当了引路人的角色,特别是Chef和Puppet。

现今用来部署应用的软件工具源自早期的一些工具,这些工具允许开发者将操作指南创建到应用中以达到简化部署的目的。这个概念,即所谓的DevOps,目标是准确和快速部署,但达到目标的不同方法很快分成了两种不同的派别。

Chef和Puppet二分天下

最简单的自动化部署方式是通过脚本。手动部署软件就是使用操作系统或云管理系统的工具启动命令,而脚本是一种可以灵活的将命令写到一个文件里然后快速执行的方式。当今市场上有两个很流行的开源自动化工具,Chef和Puppet。

Chef模型被认为是命令式或规定式,因为它是过程化的 ,明确地描述了如何部署和连接云应用程序组件。Chef以一种对程序员友好的方式来创建“菜谱”和“烹饪手册”。每个部署的步骤可以独立进行描述,这些独立的菜谱汇集到一起创建一个可重复的应用程序部署过程。由于每个操作步骤都可以在一个菜谱中描述,所有只要可以手动部署的步骤,Chef都可以自动化。

然而同样的程序员友好模式对某些用户来说并不是他们想要的。对这些用户来说,部署应用程序的合理方式是按照模型部署的最终状态来描述。该开源DevOps工具对模型进行处理来创建最终的状态。这个过程通常被称为声明式或基于目标的DevOps,也是另一种流行工具Puppet的基础。

如果Chef是对程序员友好的,那Puppet则最初源于运营人员,比起详细的如何操作的步骤,他们更熟悉如何描述他们最终想要的状态。就像高级语言让编程更加简单一样,Puppet模型能够简化部署描述。此外,由于最终状态的这种方法可以用来描述在应用生命周期管理(ALM)中的任何步骤,Puppet自然可以接纳一个完整的ALM功能,这也是Puppet的粉丝所喜欢的。

Puppet的问题是你只能部署那些可以被模型化的步骤。随着新的部署问题的出现,Puppet建模的过程开始变得同命令式脚本开发相似,而事实上,云的发展已经开始弥合这一鸿沟。Chef和Puppet似乎变得更接近彼此,而一些新的DevOps工具则跨过声明式/命令式的分隔线。不过,新的部署和配置管理的主候选工具全都支持声明模型;没有哪个是纯命令模式的。

云端的选择

云也迫使了部署和配置管理工具的发展。由于云部署需要处理虚拟化的两个层次,使得所有的部署和配置自动化变得更加复杂,而DevOps不得不同时面对部署和生命周期管理的问题。这反映在一个新的云名词上:编排。这反映了将复杂的步骤进行统一的需求。

编排连接了声明式和命令式的模型,但声明式编排似乎是更受欢迎的方法;描述一样东西当前和期望的状态是一种不错的生命周期管理的方法。两个新的纯声明式模型CFEngine和Juju,同Chef,Puppet一起正在获得更多关注。这些工具侧重于模型构造并提供政策和库的支持。此外,同时支持声明式和命令式的流程控制工具Ansible和SaltStack,正开始挑战过去的那种两极化方式。

目前为止提到的工具是从DevOps和传统部署演变而来。那么那些专门为云而生的工具的进展怎样了呢?国际标准化组织结构化信息标准推进组织(OASIS)开发了一个名为拓扑和业务流程规范云应用的声明性模型的方法。TOSCA解决了应用程序部署的最终状态定义以及虚拟资源和资源池的具体建模。TOSCA还集成了管理定义以支持生命周期自动化。

最适合你的云编排方式是什么?这里有一些技巧:

支持包括Chef在内的命令模型的工具是最强大的,在任何云中支持几乎任何种类的应用。但对于非程序员来说学起来更困难。

如果你计划依赖云端打包好的应用,那么检查该厂商是否拥有一个优选的编排方式,如果有的话,请在你的应用中也认真考虑采取这种方式。

TOSCA是云自己的模型,但也是最不成熟的。如果你当前无法做到,则可以考虑声明式云编排工具,这样过渡到TOSCA会更容易些。

如果你已经对数据中心部署的某个DevOps工具很熟悉,不要仅仅因为要迁移到云了就弃之不用了。所有的DevOps工具都在变得更加云友好。

尽管对编排这块来说还相对较新,但各式各样的开源,甚至一些商业的软件包,都支持TOSCA。一些流行的基于TOSCA的云编排工具包括Cloudify,OpenStack Heat,Alien4Cloud,以及ARIA和OpenTOSCA,这两个都是规范的参考实现。除此之外,TOSCA被接受的原因还包括网络功能虚拟化和软件定义网络。很多人认为TOSCA在这些领域的成功代表着这就是编排的未来。

编排对于应用的未来很关键。这是一种可以同时处理敏捷应用和敏捷虚拟资源的DevOps的形式。无论你用什么方法来编排,都应该随着应用和虚拟化发展的同时不断审查和修改细节。

原文发布于微信公众号 - 云计算D1net(D1Net02)

原文发表时间:2016-08-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

克服多云管理的6种工具

如今,服务器的数量正在激增,而现在的工作将由数十台、数百台甚至数千台服务器进行处理。以往人们可以用Word或Excel文档中的剪贴板或清单直接保存所有内容,现在...

4223
来自专栏WeTest质量开放平台团队的专栏

告别测试机!云真机的进阶之路

WeTest云真机自9月份全新改版上线以来,受到了广大开发者和测试人员的好评。与传统测试机相比,WeTest云真机不仅有更流畅的操作体验,更方便的测试选择,同时...

3522
来自专栏重庆的技术分享区

微服务介绍

原文地址:https://medium.freecodecamp.org/an-introduction-to-microservices-2705e7758f...

1832
来自专栏Java技术栈

高级 Java 必须突破的 10 个知识点!

工作多少年了,还在传统公司写if / for 等简单的代码?那你就真的要被社会淘汰了,工作多年其实你与初级工程师又有多少区别呢?那么作为一个高级Java攻城狮需...

3855
来自专栏DevOps时代的专栏

大规模团队如何采用标准化的持续交付模式

序言 传统软件项目交付中,各个角色分工明确,也暴露了很多软件交付中的很多问题。 DevOps的工作方式恰如其分的解决了其中一些问题,那么如何从传统交付流程迁移到...

3078
来自专栏DevOps时代的专栏

无服务器化的微服务持续交付

前言 我在刚进入 ThoughtWorks 的时候就做微服务,当时不知道什么叫做微服务,只是我们通过一个小的技术应用替换原先的大应用的一个部分,当时只是做一个解...

3816
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合优化篇(三)代码测试

前言 看到标题你可能会问为什么这一篇会谈到代码测试,不是说代码优化么?前两篇主要是讲了程序的输出及Log4j的使用,Log能够帮助我们进行bug的定位,优化开发...

28510
来自专栏CDA数据分析师

搭好数据架构,这7个技术是关键

? 本文转自网络,如涉侵权请及时联系我们 企业IT基础设施平台的重新构建是一项复杂的任务。重新构建平台通常由一系列变化的关键业务驱动因素引发,现在情况正是如此...

4195
来自专栏黑泽君的专栏

软件开发文档介绍

3962
来自专栏Java架构师进阶

一个程序员对架构的认识

架构是一个系统的草图(逻辑+物理角度),它是有生命的,随着业务的变化会不断演进。没有完美的架构只有合适的架构。

1073

扫码关注云+社区

领取腾讯云代金券