使用 Puppet 进行配置管理

【注】本文译自https://www.edureka.co/blog/what-is-puppet/
  今天,配置管理最成熟的工具是 Puppet。但是,我想您一定想知道为什么 Puppet 如此受欢迎、与其他配置管理工具相比,它有什么独特之处。

什么是 Puppet?

  Puppet 是配置管理工具,用于部署、配置和管理服务器。它具有以下功能:

  • 为每个主机定义不同的配置,并持续检查和确认主机上是否存在所需的配置,是否没有修改(如果修改后的Puppet将恢复到所需的配置)
  • 动态增减机器规模
  • 可控制所有配置机器,从而集中式(基于主服务器或仓储)变更可以自动传播给其他机器

  Puppet 使用主从架构,主从之间通过 SSL 使用安全的加密通道进行通信。
  知道了什么是 Puppet,下面让我们了解 Puppet 为什么会如此受青睐。

关键指标

  下面是有关 Puppet 的关键因素:

  • 庞大的安装群体:Puppet 在全球超过 30,000 家公司中使用,包括 Google、Red Hat、Siemens 等,以及斯坦福大学和哈佛法学院等几所大学。并且每天平均有 22 个新组织首次使用 Puppet。
  • 庞大的开发人员基础:Puppet用途广泛,很多人都在为它开发。Puppet 的核心源代码有许多贡献者。
  • 长期商业使用:Puppet 2005 年已投入商业使用,并且一直在不断完善和改进。它已经部署在非常广泛的基础架构(5,000多台计算机)中,同时在这些项目中所积累的性能和可伸缩性经验为 Puppet 的发展做出了贡献。
  • 文档:Puppet 有一个大型的用户维护的 Wiki,其中包含数百页的文档以及有关语言及其资源类型的全面参考。此外,它还在多个邮件列表中进行了积极的讨论,并拥有一个非常受欢迎的 IRC 频道,因此,无论你有什么问题,都可以轻松找到答案。
  • 平台支持:Puppet Server可以在支持ruby的任何平台上运行,例如:CentOS,Microsoft Windows Server,Oracle Enterprise Linux等。它不仅支持新的操作系统,而且还可以在相对老旧的操作系统和 Ruby 版本上运行。

  现在很明显,Puppet在全球范围内有巨大的需求。但是,在深入研究 Puppet 之前,我首先解释什么是配置管理及其重要性。

配置管理

  系统管理员通常执行重复性任务,例如安装服务器,配置这些服务器等。他们可以通过编写脚本来自动执行此任务,但是在大型基础架构上工作时,会非常繁琐。
  为了解决这一问题,引入了配置管理。 配置管理是一种系统地处理变更的实践,以便系统随着时间的推移保持其完整性。配置管理(CM)确保系统的当前设计和构建状态是已知的,良好的和可信赖的;并且不依赖开发团队的隐性知识。它允许访问准确的系统状态历史记录,以进行项目管理和审计。配置管理克服了以下挑战:

  • 由于需求变更而带来的重新实现。
  • 对于新发布但有缺陷的版本,可还原到先前版本。
  • 因为无法确定组件类型而导致发布错误的组件。

  让我们通过一个用例来了解它的重要性。
  我知道的最好的例子发生在纽约证券交易所(NYSE)。一个软件“故障”使纽交所在近90分钟的时间内无法进行股票交易,造成了数百万美元的损失。这是由于安装新软件所导致,该软件已安装在其20个交易终端中的8个上,并且该系统已在前一天晚上进行了测试。但是,早晨,它在8个终端上无法正常运行。因此,必须切换回旧软件。您可能会认为这是纽约证券交易所配置管理流程的失败,但实际上这正是它的成功之处上:通过适当的配置管理流程,NYSE 在90分钟内中恢复正常,速度非常快。如果问题持续更长的时间,后果将更加严重。

  现在,希望您了解配置管理的重要性。配置管理阶段可以看作是 DevOps 的主干。它允许以最安全,最可靠的方式更频繁地发布软件。
  接下来,让我们来看看 Puppet 的一些应用。

Puppet 的应用

  让我们通过一个案例来了解 Puppet 的应用。如果您是扑克爱好者或曾经玩过在线游戏,那么您一定已经听说过 Zynga。它是世界上最大的社交游戏开发商。Zynga的基础设施在公共云和私有数据中心都使用了数以万计的服务器。早期,他们使用手动流程,包括 kickstarter 和 post 安装,以使数百台服务器上线。
  现在,我们将看到他们在此过程中面临哪些问题:

  • 可扩展性和一致性 – Zynga 经历了惊人的增长,其基础架构需要跟上行业发展的步伐。基于脚本的解决方案和手动方法不足以满足其需求。
  • 便携式基础架构 – Zynga 需要在公共云基础设施和自己的数据中心中利用一致的配置管理方法。
  • 灵活性 – 考虑到 Zynga 游戏的多样性,团队能够快速匹配适用于不同机器的配置非常重要。
  • 基础架构洞察力 – 随着组织的成熟,拥有一种可视化每台计算机属性的自动化方法变得越来越重要。

  该公司足够聪明,甚至在实现快速扩张之前就迅速意识到对自动化流程的需求,这时 Puppet 就出现了。让我们了解 Puppet 是如何为他们的组织做出贡献的。

  • 恢复速度 – 生产运营团队可以将正确的配置快速部署到正确的位置。如果对系统进行了不正确的重新配置,Puppet 将自动将其恢复为上一个稳定状态,或者提供快速手动修复系统所需的详细信息。
  • 部署速度 – Puppet 提供的服务方式为游戏工作室的运营团队节省了大量的时间。
  • 服务器的一致性 – Puppet 的模型驱动框架可确保部署的一致性。Zynga 生产运营副总裁 Mark Stockford 表示:“很明显,我们节省了时间。使用Puppet的好处在于,它允许我们在短时间内跨服务器交付一致的配置。”
  • 协作 – 采用模型驱动的方法可以轻松地在组织内共享配置,使开发人员和运营团队可以一起工作,以确保新的服务交付具有极高的质量。Zynga 团队的十多人接受了 Puppet 培训。这些知识传播到整个团队以及各个游戏工作室的运营团队中。
posted @ 2021-03-05 17:36  码者无疆  阅读(128)  评论(0编辑  收藏  举报