什么是 Puppet?
在 DevOps 中,您希望自动化尽可能多的任务。对于庞大的基础架构,手动配置环境需要数周时间。当一切都准备就绪时,您是在灭火,而不是实施新的有效解决方案,例如 Rancher 服务器。
Puppet 有助于自动化手动任务以快速配置系统和部署应用程序。动态基础设施管理是 Puppet 的核心。
本文解释了 Puppet 是什么,它解决了哪些问题,以及如何使用 Puppet 作为 DevOps 团队成功地自动化手动作业。
什么是木偶?
Puppet 是一个 IaC(基础设施即代码)工具,用于管理多个服务器。 Puppet(主要)用 Ruby 编写,可在多个类 Unix 系统上运行,并且也支持 Windows。
该软件非常成熟,最初的版本是在 2005 年。Puppet 是免费的开源软件,并且专有版本也可用于复杂的基础设施。
木偶有什么用?
Puppet 自动化服务器配置管理和部署。该软件可以同时在多个系统上拉字符串和管理状态,并且该方法减少了单独手动设置和管理服务器。
Puppet 定义了系统所需的状态,而不是如何到达那里。该配置适用于各种平台和设备,并跨基础架构维护状态。总体而言,系统管理员不再需要扑灭火灾,从而使 DevOps 团队能够实施新的更好的服务器解决方案。
Puppet 配置管理
自动化脚本有助于处理重复性任务,例如安装和配置服务器。但是,在使用广泛的基础架构时,自动化脚本无法扩展。
配置管理为广泛的基础架构配置提供了解决方案。这些实践被认为是 DevOps 的支柱,并允许在已建立的 DevOps 管道中频繁且更可靠地发布软件。
服务器配置管理得益于基础设施即代码方法。在 Puppet 的情况下,服务器管理代码在 Puppet 代码中,类似于 Ruby。该语言是声明性的,描述了基于模型的配置。
木偶是如何工作的?
Puppet 采用客户端-服务器方式,由以下系统组成:
- Puppet Master 是一个带有 Puppet Master 守护进程的服务器,它使用清单管理所有节点的关键系统信息。
- Puppet 代理是安装了 Puppet 并运行 Puppet 代理守护程序的节点。
以下部分解释了 Puppet 的基本元素和术语,有助于阐明 Puppet 的工作原理。
Puppet 拓扑和架构
Puppet 利用由 Puppet Master 和 Puppet Agents 组成的客户端/服务器架构。 Puppet Agents 使用 pull 模式轮询 master 并检索特定于节点和特定于站点的配置信息。
拓扑经过以下步骤:
- 运行 Puppet Agent 守护程序的节点会收集有关其自身的所有信息(事实),然后代理将事实发送给 Puppet Master。
- Puppet Master 使用这些数据创建一个关于如何配置节点的目录并将其发送回 Puppet 代理。
- Puppet Agent 根据目录进行自我配置并向 Puppet Master 报告。
Puppet 使用一个名为 Facter 的实用程序 发现系统信息。该工具默认自带Puppet安装。
木偶大师
Puppet Master 是运行在专用服务器上的守护进程。 Puppet Master 作为服务器节点是信息源和配置权限。主节点向所有代理节点发送指令并监督系统的配置。
傀儡师负责以下任务:
- 为代理创建目录。
- 文件从文件服务器传输到代理。
- 接受来自代理的 SSL 证书。
- 存储配置清单。
Puppet 通过专用用户和组使用身份访问管理,提供安全性并仅向代理公开所需信息。但是,并非所有操作都需要提升权限。
傀儡特工
Puppet Agent 是在系统或节点上运行的 Puppet 守护进程。代理在节点上拥有一定的权限,可以应用从 Puppet Master 拉取的配置目录。
为了获得通信许可,代理在与主服务器的第一次联系期间请求 SSL 证书。每次代理在发送信息之前向主服务器询问配置更新时,都会检查证书。 master 还向代理进行身份验证以确保正确的配置信息。
傀儡代理修改系统配置,需要root权限才能执行任务。
Puppet 加密与通信安全
Puppet 使用 OpenSSL 进行通信和安全性。基于 SSL 和 TLS 协议,Puppet 使用标准的 SSL/TLS 加密和 SSL 证书进行代理/主认证和验证。此外,Puppet 使用 SSL/TLS 加密代理和服务器之间的流量,使用 SHA-256 作为默认哈希。
Puppet 中的加密方法确保以下几点:
- 主/代理身份验证和验证。
- 防止主机和代理之间的数据泄露。
主服务器生成自己的 CA 证书、私钥、CRL(证书撤销列表)和服务器证书。服务器证书被发送到代理以启用 SSL 和 TLS 通信。
Puppet 的优点以及为什么要使用它
Puppet 是历史最悠久、最受欢迎的配置管理自动化工具之一。以下是开始使用 Puppet 的五个优势。
1。开源
Puppet 是开源的,这使得该技术具有可扩展性。自定义库和模块丰富了各个项目以适合您的用例。
开源还带来了活跃社区的好处。大量讨论、论坛和专家随时准备提供帮助和回答问题。
2。资源抽象
配置任务是重复性的,并且通过特定于平台的步骤在具有不同操作系统的服务器上通常需要相同的步骤。记住所有命令是一项不可能完成的任务。
Facter 帮助 Puppet 找出细节并实现抽象。多亏了 Facter,Puppet 对系统特定的数据和操作系统细节都很熟悉。
3。幂等性
在使用大量服务器时,冗余配置是一个复杂的问题,Puppet 旨在仅应用那些影响系统的更改。如果达到所需的基础架构状态,Puppet 不会运行命令。这种 Puppet 特性称为幂等性,有助于减少冗余并提高效率。
4。跨平台
Puppet 覆盖的平台范围很广,这增加了配置自动化过程中的服务器数量。该工具适用于 Windows、OS X、基于 Debian 的系统、Fedora、Gentoo、RHEL 和 Solaris。
5。灵活
Puppet 语言包括一种覆盖指令并为不同场景创建异常的方法。 Puppet 还有助于定期安排特定的维护操作。
结论
Puppet 是用于管理配置和服务器任务的强大工具,对于不会动态或经常更改的稳定服务器来说,它是一个绝佳的选择。
要了解 Puppet 与其他类似技术的比较,请查看我们的比较文章:Ansible vs. Terraform vs. Puppet。
云计算