数据可视化系统运维专家工程项目管理

DevOps 漫谈:基础设施部署和配置管理

2018-03-29  本文已影响65人  RiboseYim
image

在生产环境中工作,常常意味着连续部署和遍布全球的基础设施。如果您的基础架构是分散式和基于云的,同时您需要在大量服务器上频繁部署大量类似的服务,如果此时有一种方法可以自动配置和维护以上所有内容将是您的一大福音。

部署管理工具(Deployment management tools)和配置管理工具(configuration management tools)是为此目的而设计的。它们使您能够使用“食谱”(recipes),“剧本” (playbooks),模板(templates)或任何术语来简化整个环境中的自动化和编排,以提供标准、一致的部署。

在选择工具时请记住几点注意事项。首先是了解工具的模型。有些工具采用主控模式(master-client model),它有一个集中控制点(master)与分布式部署的服务器进行通信,其他部分则可以在更本地的层面上运行。另一个考虑因素是你的环境构成。有些工具是采用不同的语言编写的,对于特定的操作系统或设置可能会有所不同。确保您选择的工具与您的环境完美配合,充分利用团队的特定技能可以为您节省很多麻烦。

1. Ansible

image

Ansible是一种开源工具,用于以可重复的方式将应用程序部署到远程节点和配置服务器。它为您提供了基于推送模型(push model )推送多层应用程序和应用程序组件的通用框架,您也可以根据需要将其设置为 master-client 模式。 Ansible 建立在可用于各种系统上部署应用程序的剧本(playbook)。

何时使用它 :对您来说最重要的是快速,轻松地启动和运行,并且您不想在远程节点或受管服务器上安装代理(Agent)。如果您的需求重点更多地放在系统管理员身上,专注于精简和快速,请考虑 Ansible 。

价格:免费的开源版本,Ansible Tower 的付费套餐每年 5000 美元(最多可容纳100个节点)。

赞成的理由:

反对的理由:

image

2. Chef

image

Chef 是一个配置管理开源工具,用户群专注面向开发者。Chef 作为 master-client 模式运行,需要一个单独的工作站来控制 master 。Chef 基于 Ruby 开发,纯 Ruby 可以支持大多数元素。Chef 的设计是透明的,并遵循给定的指示,这意味着你必须确保你的指示是清楚的。

何时使用它:在考虑 Chef 之前,需要确保你熟悉 Git ,因为它需要配置 Git ,你必须编写 Ruby 代码。Chef 适合以开发为中心(development-focused )的团队和环境。对于寻求更成熟异构环境解决方案的企业来说,这是一件好事。

价格:提供免费的开源版本,标准版和高级版计划以每年节点为单位定价。 Chef Automate 的价格为每个节点 137 美元,或者采用 Hosted Chef 每个节点每年节省72 美元。

赞成的理由:

反对的理由:

image

3. Fabric

image

Fabric 是一个基于 Python 的应用程序部署工具。Fabric 的主要用途是在多个远程系统上运行任务,但它也可以通过插件的方式进行扩展,以提供更高级的功能。 Fabric 将配置您的操作系统,进行操作系统/服务器管理,自动化部署您的应用。

何时使用它:如果您刚刚开始进入部署自动化领域,Fabric 是一个良好的开端。如果您的环境至少包含一点 Python,它都会有所帮助。

价格:免费

赞成的理由:

反对的理由:

image

4. Puppet

image

Puppet 长期依赖是全面配置管理领域的标准工具之一。Puppet 是一个开源工具,但是考虑到它已经存在了多长时间,它已经在一些最大和最苛刻的环境中进行了部署和验证。 Puppet 基于 Ruby 开发,但使用更接近 JSON 的领域专用语言(Domain Specific Language,DSL)。Puppet 采用master-client 模式运行,并采用模型驱动(model-driven)的方法。 Puppet 将工作设计为一系列依赖关系列表,根据您的设置,这可以使事情变得更容易或更容易混淆。

何时使用它: 如果稳定性和成熟度对您来说是最关键的因素,Puppet 是一个不错的选择。对于具有异构环境的大型企业和涉及多种技能范围的 DevOps 团队而言而言,这是一件好事。

价格:Puppet 分为免费的开源版本和付费的企业版本,商业版每年每个节点 120 美元(提供批量折扣)。

赞成的理由:

反对的理由:

image

5. Saltstack

image

SaltStack(或 Salt)是一种基于 CLI 的工具,可以将其设置为 master-client 模型或非集中模型。 Salt 基于Python 开发,提供了 PUSH 和 SSH 两种方法与客户端通讯。 Salt 允许对客户端和配置模板进行分组,以简化对环境的控制。
何时使用它: 如果可扩展性和弹性是一个大问题,则 Salt 是一个不错的选择。对系统管理员来说,Salt 提供的可用性非常重要。

价格:提供免费的开源版本,以及基于年度/节点订阅的 SaltStack Enterprise 版本。具体的价格没有在他们的网站上列出,据说每个节点每年的起步价为 150 美元。

赞成的理由:

反对的理由:

Salt Subsystems image

Ansible vs. Chef vs. Fabric vs. Puppet vs. SaltStack

您使用的配置管理或部署自动化工具取决于您的环境需求和偏好。 Chef 和 Puppet 是一些较老的、更成熟的选项,它们适用于那些重视成熟性和稳定性而非简单性的大型企业和环境。 Ansible 和 SaltStack 是寻求快速和简约解决方案人士的理想选择,同时在不需要支持某些特殊功能或具有大量操作系统的环境中工作。Fabric 对于小型环境和那些正在寻求更低门槛和入门级解决方案的人来说是一个很好的工具。

WordBook

YAML

YAML 语言(发音 /ˈjæməl/ )实质上是一种通用的数据串行化格式。基本语法规则如下:

YAML 支持的数据结构:

DSL|Domain Specific Language,领域专用语言

DSL的目标受众是非程序员,业务员或者最终用户。
DSL 最大的设计原则就是简单,通过简化语言中的元素,降低使用者的负担;无论是 Regex、SQL 还是 HTML 以及 CSS,其说明文档往往只有几页,非常易于学习和掌握。但是,由此带来的问题就是,DSL 中缺乏抽象的概念,比如:模块化、变量以及方法等。

扩展阅读:DevOps 漫谈系列

DevOps 实践的本质是文化

上一篇 下一篇

猜你喜欢

热点阅读