什么是 Puppet?组件和编写清单
想象一下,一个系统管理员管理着许多服务器。他们可以轻松地解决任何可能出现的服务器问题。但是当多台服务器不可用时,情况就会变得严重。
Puppet 在这里可以派上用场。
使用 Puppet,可以轻松地部署有问题的服务器。代码执行后,所有服务器都会立即重置为其原始的所需设置。
本文将涵盖以下关于 Puppet 的主题:
描述 Puppet。
Puppet 的组件
Puppet 的工作原理
企业使用 Puppet 编写 Puppet 清单
描述 Puppet
配置管理工具 Puppet 确保所有系统都设置为期望的和可预测的状态。
Puppet 可以自动在系统上安装应用程序;因此,您也可以将其用作部署工具。Puppet 提供基础设施即代码,可以测试环境并进行精确部署。
在讨论了什么是 Puppet 之后,让我们了解一下 Puppet 的组件。
Puppet 的组件
Puppet 环境由核心服务器环境(如上所示)和客户端环境组成。主服务器环境上有一个 Puppet master 存储,其中保存所有配置文件。
用于配置客户端的实际代码是清单。
代码和数据在模板中组合以生成最终文档。
文件是客户可以下载的静态材料。
清单、模板和文件构成模块。
由于证书颁发机构,主服务器可以签署客户端发送的证书。
必须配置的计算机是 Puppet 客户端,它由 Agent 和 Fact 组成。
在查看了 Puppet 的各个部分之后,让我们研究一下 Puppet 的工作原理,以便更好地理解什么是 Puppet。
Puppet 的架构
Puppet 的架构基于主从节点。
客户端分散在网络中,并与包含 Puppet 模块的主从环境交互。将带有客户端代理 ID 的证书发送到服务器,服务器对其进行签名并将其发送回客户端。这种身份验证使客户端和主服务器之间的连接变得安全且可验证。
然后,Fact 收集客户端的状态并将其发送到主服务器。主服务器根据提供的 Fact 将清单组合到目录中,并且代理在计算机上执行清单。目录被传递给客户端。客户端创建一份详细说明所做任何更改的报告并将其发送到主服务器。
使用 Puppet 的企业
了解使用 Puppet 管理其基础设施的企业,将增加您学习更多相关知识的兴趣。其中一些包括:
Spotify
Google
AT&T
史泰博
AON
美国空军
这些公司出于各种原因采用了 Puppet。例如,史泰博使用 Puppet 作为配置管理解决方案来自动化其 IT 运营和其私有云的管理,以确保一致性,从而使 IT 员工有更多时间进行创新。
在 Puppet 中编写清单
清单是为节点配置而编写的文件,并被组装成在客户端上运行的目录。每个清单都有 .pp 扩展名,并且是用 Ruby 编程语言编写的。
编写清单有五个基本步骤。
系统管理员创建清单文件。
编译 - 通过组合清单创建目录。
部署 - 客户端接收目录。
执行 - 代理在客户端上运行目录。
最后,客户端被设置为所需的状态。
每个清单都必须遵循相同的语法
Firstpuppet { ‘title’ : Attribute_name1 => attribute_value Attribute_name2 => attribute_value }
在这种情况下,第一个 Puppet 可以是服务、包或两者。
第一个 Puppet 的名称称为其“标题”。需要更改或设置其值的特性称为 Attribute name1(例如:IP、ensure)。
attribute value - 这是属性的新值(例如:present、start)
一个清单中可以有多种资源类型。“default”一词会影响使用该清单的所有客户端。
例如 -
default node '/etc/sample' file: This is an example manifest, says the content. } service called "httpd" guarantee => installed } }
我们第一个 Puppet 的路径为 /etc/sample。
文件将使用请求的内容更新。如果文件尚不存在,则首先创建它。下一个资源是 Apache 服务,它将在客户端节点上设置。清单被部署到客户端计算机。将安装 Apache 服务器,并且客户端现在在“etc.”子目录中有一个名为“sample”的文件。
Puppet 版本的生命周期
Puppet 开源提供了两种发布路径
更新计划 - 与 PE 版本无关的 Puppet 版本平均每月接收一次次要(或“y”)更新。此跟踪上的版本通常不会获得补丁(或“z”)版本,尽管它们确实包含修复和新功能。此跟踪的更新会覆盖任何早期的次要版本。
长期发布 - 与 Puppet Enterprise LTS(长期支持)版本相关的 Puppet 版本大约每季度发布一次补丁(或“z”)版本。每个版本都不包含新功能,而是包含来自先前开发版本的安全和错误修复。
Puppet 的用例
借助 Puppet Forge 的内置模块和代码示例,可以自动化以下用例:
系统的基本设置。包括服务、防火墙、NTP 和注册表
控制 Web 服务器。包括 IIS、nginx、tomcat、Apache 等
源代码监控包括 Gitlab 监控和 GitHub。其中包括 Splunk、Nagios、Zabbix、Sensu、Prometheus、New Relic、Icinga 和 SNMP
补丁管理。企业 Linux、Debian、SLES、Ubuntu 和 Windows
操作系统补丁的包管理。
Linux - 本机包管理器直接与 Puppet 集成
Windows - 与 Chocolatey 集成容器和云原生,或使用 Puppet 在 Windows 上本地安装应用程序。包括 Terraform、OpenShift、Docker 和 Kubernetes
容器和云原生。与 Docker、Kubernetes、Terraform 和 OpenShift 一起
结论
在本文中,我们研究了广泛的 Puppet。我们还观察了 Puppet 的基本元素和每个与 Puppet 相关的应用程序案例。