蚊章汇 - Marco Bravo
type: channel
link: https://linuxcn.bwsl.wang/author/1180/
description: Marco Bravo
items: 五大最流行的配置管理工具

五大最流行的配置管理工具
type: item
date: 2019-02-02T01:52:58+08:00
description: 了解一下配置管理工具，以找出哪个最适合你的 DevOps 组织。DevOps 正因为有提高产品质量、缩短产品开发时间等优势，目前备受业界关注，同时也在长足发展当中。DevOps 的核心价值观是 团队文化 Culture 、 自动化 Automation 、 评估 Measurement 和 分享 Sharing （CAMS），同时，团队对 DevOps 的执行力也是 DevOps 能否成功的重要因素。团队文化让大家团结一致；自动化是 DevOps 的基础；评估保证了及时的改进；分享让 CAMS 成为一个完整的循环过程。DevOps 的另一个思想是任何东西，包括服务器、数据库、网络、日志文件、应用配置、文档、自动化测试、部署流程等，都可以通过代码来管理。在本文中，我主要介绍配置管理的自动化。配置管理工具作为 基础架构即代码 Infrastructure as Code （IaC）的一部分，支持使用经过测试和验证的软件开发实践，通过明文定义文件管理和配置数据中心。DevOps 团队只需要通过操作简单的配置文件，就可以实现应用开发中包括版本控制、测试、小型部署、设计模式在内的这些最佳实践。总而言之，配置管理工具实现了通过编写代码来使基础架构的配置和管理变得自动化。为什么要使用配置管理工具？配置管理工具可以提高应用部署和变更的效率，还可以让这些流程变得可重用、可扩展、可预测，甚至让它们维持在期望的状态，从而让资产的可控性提高。使用配置管理工具的优势还包括：让代码遵守编码规范，提高代码可读性；具有 幂等性 Idempotency ，也就是说，无论执行多少次重复的配置管理操作，得到的结果都是一致的；分布式的设计可以方便地管理大量的远程服务器。配置管理工具主要分为 拉取 pull 模式和 推送 push 模式。拉取模式是指安装在各台服务器上的 代理 agent 定期从 中央存储库 central repository 拉取最新的配置并应用到对应的服务器上；而推送模式则由 中央服务器 central server 的中央服务器会触发其它受管服务器的更新。五大最流行的配置管理工具目前配置管理工具有很多，不同的配置管理工具都有自己最适合的使用场景。而对于下面五个我按照字母顺序列出的配置管理工具，都对 DevOps 有明显的帮助：全都具有开源许可证、使用外部配置文件、支持无人值守运行、可以通过脚本自定义运行。下面对它们的介绍都来源于它们的软件库和官网内容。Ansible“Ansible 是一个极其简洁的 IT 自动化平台，可以让你的应用和系统以更简单的方式部署。不需要安装任何代理，只需要使用 SSH 的方式和简单的语言，就可以免去脚本或代码部署应用的过程。”——GitHub Ansible 代码库官网文档社区Ansible 是我最喜欢的工具之一，我在几年前就开始使用了。你可以使用 Ansible 在命令行中让多个服务器执行同一个命令，也可以使用 YAML 格式的 剧本 playbook 来让它自动执行特定的操作，这促进了技术团队和非技术团队之间的沟通。简洁、无代理、配置文件对非技术人员友好是它的几个主要优点。由于 Ansible 不需要代理，因此对服务器的资源消耗会很少。Ansible 默认使用的推送模式需要借助 SSH 连接，但 Ansible 也支持拉取模式。剧本 可以使用最少的命令集编写，当然也可以扩展为更加精细的自动化任务，包括引入角色、变量和其它人写的模块。你可以将 Ansible 和其它工具（包括 Ansible Works、Jenkins、RunDeck、ARA 等）结合起来使用，因为这些工具 提供了运行剧本时的可追溯性，这样就可以创建控制流程的中央控制台。CFEngine“CFEngine 3 是一个流行的开源配置管理系统，它主要用于为大规模的系统提供自动化配置和维护。”——GitHub CFEngine 代码库官网文档社区CFEngine 最早在 1993 年由 Mark Burgess 作为自动配置管理的科学方法提出，目的是降低计算机系统配置中的熵，最终收敛到期望的配置状态，同时还阐述了幂等性是让系统达到期望状态的能力。Burgess 在 2004 年又提出了 承诺理论 Promise Theory ，这个理论描述了代理之间自发合作的模型。CFEngine 的最新版本已经用到了承诺理论，在各个服务器上的代理程序会从中央存储库拉取配置。CFEngine 的配置对专业技能要求较高，因此它比较适合技术团队使用。Chef“为整个基础架构在配置管理上带来便利的一个系统集成框架。”——GitHub Chef 代码库官网文档社区Chef 通过由 Ruby 编写的“ 菜谱 recipe ”来让你的基础架构保持在最新、最兼容的状态，这些“菜谱”描…