千家信息网

DevOps 系列工具之 Puppet 安装与基础配置

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,Puppet 简介:Puppet是基于Ruby语言(早期的版本,4及之后的Server端采用Clojure语言)开发的、可以管理Unix(包括OS X)、Linux和Microsoft Windows
千家信息网最后更新 2025年12月01日DevOps 系列工具之 Puppet 安装与基础配置

Puppet 简介:

Puppet是基于Ruby语言(早期的版本,4及之后的Server端采用Clojure语言)开发的、可以管理Unix(包括OS X)、Linux和Microsoft Windows平台的配置管理工具。同时面向研发及运维人员,是实现 DevOps 的重要工具之一。

应用场景:

统一配置管理软件
统一配置系统优化参数
定期检测服务是否运行
根据机器硬件环境自动为相应主机上的软件配置合理的属性

Puppet的操作模型:

部署层

Puppet 通常运行在C/S模式下,服务器端称为 Puppet master,客户端称为 Agent,客户端主机称为 Node。Agent 通过标准的 SSL 加密认证的方式与 Master 建立连接,获取本机需要的配置信息。
在 Agent 未取得配置信息、或者已经达到配置状态时,Puppet 不会对系统进行改动,它只有在被要求的时候才修改系统,这是 Puppet 的一个关键特征,称为幂等性(Idempotency),这个修改过程称为一次配置运行(Configuration run)。
Agent 通常以守护进程的方式运行,默认每30分钟与 Master 进行一次交互,以确认配置项是否发生了变化,这个时间间隔可以根据自己的需求灵活调整。也可以以 cron 的方式运行或者手工触发 Agent。

配置语言与资源抽象层

大多数脚本语言(如 Shell Perl)是命令式或者过程式的,即"如何"达到想要的状态,而 Puppet 语言是描述式的,只需要描述最终状态是什么,不用关心是如何达到。例如安装 vim 软件包,手工安装时需要以下步骤:
1.连接到需要安装软件包的主机
2.检查 vim 是否安装
3.没有安装,需要根据主机的操作系统选择合适的命令安装,如 CentOS 使用 yum 命令,Ubuntu 使用 apt-get 命令
4.安装结束根据返回的结果确认是否安装成功。

  使用 Puppet 安装vim,只需要定义一个资源,并且定义资源要达到的状态即可  package { 'vim':    ensure => present,  }

事物层

事物层是 Puppet 的工作引擎,一个 Puppet 事物包含配置一台 Agent 主机的完整过程,包括如下步骤:

  1. 解析并编译配置
  2. 将编译的后的配置发送到 Agent 上
  3. 在 Agent 上应用编译后的配置
  4. 将运行结果上报给 Master

工作流程

  1. Agent 访问 Master 建立访问信任关系,包括 Master 对 Agent 证书授权签名,并允许 Agent 访问 Master 资源
  2. 建立信任关系后,Master 调用 Agent 的 Facter,探测出 Agent 主机的一些机器变量,如操作系统、主机名、IP地址、CPU等信息。Agent 将这些信息通过 SSL 加密传输到 Master,Master 以变量的形式获取这些信息并使用
    1. Master 接收到 Agent 的请求,将它们发送到本机的 manifests 或 ENC(外部节点分类器),然后进行配置信息查询
  3. 根据 Agent 的 HOSTNAME 匹配到相应的Node,进行语法检查并生成相应的 Catalog
  4. Agent 接收到 Catalog 后,在本机应用,并根据 Catalog 中的信息判断是否有 File 文件要从 Master 端获取,有则向 Master Fileserver 发起请求获取文件
  5. 将执行后的结果以报告的形式上报 Master
  6. 整个事务完成

    安装前需要考虑的地方:

    版本选择:Puppet 最好的版本通常是最新的发布版
    运行模式:服务器端-客户端模式和独立运行模式
    DNS:Agent 每次连接 Master 时,都会使用域名
    防火墙 :Puppet master 监听在 8140 端口,如果开启了防火墙必须放行 8140 端口,Iptables 配置如下:
    iptables -A INPUT -p tcp -m state --state NEW --dport 8140 -j ACCEPT
    iptables -A INPUT -p tcp -m state --state NEW -s 172.16.0.0/16 --sport 8140 -j ACCEPT
    NTP 时钟同步
    Puppetmaster:不能运行在Windows主机上
    混合版本部署:服务端的版本必须比客户端高,4.x及以上不支持3.x及以下
    硬件要求:2~4核CPU,4GB以上内存,大约可管理1000个节点

安装(来源于官网)

Yum-based systems
To enable the Puppet 5 Platform repository:
1 Choose the package based on your operating system and version.
The packages are located in the puppet5 directory of the yum.puppet.com repository and named using the following convention: -release--.noarch.rpm For instance, the package for Puppet 5 Platform on Red Hat Enterprise Linux 7 (RHEL 7) is puppet5-release-el-7.noarch.rpm.
2 Use the rpm tool as root with the upgrade (-U) flag, and optionally the verbose (-v), and hash (-h) flags:

Enterprise Linux 7sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-el-7.noarch.rpmEnterprise Linux 6sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-el-6.noarch.rpmEnterprise Linux 5wget https://yum.puppet.com/puppet5/puppet5-release-el-5.noarch.rpmsudo rpm -Uvh puppet5-release-el-5.noarch.rpm

Note: For recent versions of Puppet, we no longer ship Puppet master components for RHEL 5. However, we continue to ship new versions of the puppet-agent package for RHEL 5 agents.

Fedora 26sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-fedora-26.noarch.rpmFedora 25sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-fedora-25.noarch.rpmSuSE Enterprise Linux 12sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-sles-12.noarch.rpmSuSE Enterprise Linux 11sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-sles-11.noarch.rpm

Apt-based systems
To enable the Puppet 5 Platform repository:
1 Choose the package based on your operating system and version. The packages are located in the apt.puppet.com repository and named using the convention -release-.debFor instance, the release package for Puppet Platform on Debian 7 "Wheezy" is puppet5-release-wheezy.deb. For Ubuntu releases, the code name is the adjective, not the animal.
2 Download the release package and install it as root using the dpkg tool and the install flag (-i):wget https://apt.puppetlabs.com/puppet5-release-wheezy.deb
3 sudo dpkg -i puppet5-release-wheezy.deb
4 Run apt-get update after installing the release package to update the apt package lists.

Ubuntu 16.04 Xenial Xeruswget https://apt.puppetlabs.com/puppet5-release-xenial.debsudo dpkg -i puppet5-release-xenial.debsudo apt updateUbuntu 14.04 Trusty Tahrwget https://apt.puppetlabs.com/puppet5-release-trusty.debsudo dpkg -i puppet5-release-trusty.debsudo apt-get updateDebian 9 Stretchwget https://apt.puppetlabs.com/puppet5-release-stretch.debsudo dpkg -i puppet5-release-stretch.debsudo apt-get updateDebian 8 Jessiewget https://apt.puppetlabs.com/puppet5-release-jessie.debsudo dpkg -i puppet5-release-jessie.debsudo apt-get updateDebian 7 Wheezywget https://apt.puppetlabs.com/puppet5-release-wheezy.debsudo dpkg -i puppet5-release-wheezy.debsudo apt-get update[root@master1 yum.repos.d]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@master1 yum.repos.d]# sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-el-7.noarch.rpm[root@master1 yum.repos.d]# yum list |grep puppetpuppet5-release.noarch                      5.0.0-1.el7                installedbolt.x86_64                                 0.17.2-1.el7               puppet5  pdk.x86_64                                  1.4.1.1-1.el7              puppet5  puppet-agent.x86_64                         5.4.0-1.el7                puppet5  puppet-client-tools.x86_64                  1.2.2-1.el7                puppet5  puppet-release.noarch                       1.0.0-1.el7                puppet5  puppetdb.noarch                             5.2.0-1.el7                puppet5  puppetdb-termini.noarch                     5.2.0-1.el7                puppet5  puppetserver.noarch                         5.2.0-1.el7                puppet5  razor-server.noarch                         1.7.1-1.el7                puppet5

安装Puppet Master

[root@master1 yum.repos.d]# sudo yum install -y puppetserver[root@master1 puppetlabs]# pwd/opt/puppetlabs[root@master1 puppetlabs]# bin/puppet --version5.4.0[root@master1 puppetlabs]# server/bin/puppetserver --versionpuppetserver version: 5.2.0

yum 安装 Master 时,也会安装 Agent 包,4.x及以上的安装路径为 /opt/puppetlabs/ 目录,配置文件路径为 /etc/puppetlabs/ 目录

安装 Puppet Agent

[root@master1 yum.repos.d]# sudo yum install -y puppet-agent

修改配置文件

Puppet5.x 的配置文件路径为 /etc/puppetlabs/puppet/ 目录下
puppet.conf 配置文件简介:
[main] 用于 Puppet 全局配置
[master] 用于 Puppet 的 Master 配置
[agent] 用于 Puppet 的 Agent 配置

[main]server = master1.tongwen.life #指定 Puppet 服务端地址autoflush = false #是否实时刷新日志到磁盘logdir = /var/log/puppet #日志目录rundir = /var/run/puppet #进程pid文件存放目录[master]reportdir = /var/lib/puppet/reports #报告存放目录autosign = true #自动授权签名配置文件autosign = /etc/puppet/autosign.confbindaddress = 0.0.0.0 #puppetserver 服务监听地址masterport = 8140 #puppetserver 服务监听端口evaltrace = true #定义为true,可以看到执行的过程与变化[agent]certname = www1.tongwen.life #客户端的主机名daemonize = true #是否后台运行,true表示是allow_duplicate_certs = true #是否允许证书自动覆盖,默认不允许,有效期5年report = true #是否上传客户端对资源的执行结果reports = store, http #上传的方式report_server = master1.tongwen.life #store 上传地址report_port = 8140reporturl = http://localhost:3000/reports/uploadruninterval = 20m #客户端执行间隔,默认30msplay = true #是否在执行时间上加一个随机时间,0到最大随机时间之间的整数splaylimit = 10m #随机时间的最大长度configtimeout = 2m #客户端获取配置超时时间color = ansi #日志记录是否加颜色ignorecache = true #是否忽略本地缓存

启动服务

如果 Master 主机的内存配置小于2GB,需要修改Java初始内存

vi /etc/sysconfig/puppetserverJAVA_ARGS="-Xms2g -Xmx2gsystemctl start puppetserver #启动server端systemctl start puppet #启动agent

签批证书

[root@master1 puppetlabs]# puppet cert list"node1.tongwen.life" (SHA256) E9:62:D5:7A:AD:1F:1D:DD:8F:0F:36:16:50:0C:[root@master1 puppetlabs]# puppet cert sign node1.tongwen.lifeSigning Certificate Request for:"node1.tongwen.life" (SHA256)  E9:62:D5:7A:AD:1F:1D:DD:8F:0F:36:16:50:0C:11:D6:02:39:7B:CB:8C:87:C9:25:E0:F7:A2:D7:D9:55:3B:37Notice: Signed certificate request for node1.tongwen.lifeNotice: Removing file Puppet::SSL::CertificateRequest node1.tongwen.life at '/etc/puppetlabs/puppet/ssl/ca/requests/node1.tongwen.life.pem'[root@master1 puppetlabs]# puppet cert sign --all  #签批所有

在agent上执行 puppet agent --test 验证证书的认证结果,如果有报错,请检查时间是否同步。

[root@master1 puppetlabs]# ntpdate cn.ntp.org.cn

创建配置项

[root@master1 manifests]# pwd/etc/puppetlabs/code/environments/production/manifestsvi site.ppnode 'node1.tongwen.life' {    package { 'vim':     ensure => present,  }}
配置 主机 运行 客户 文件 服务 信息 客户端 时间 目录 版本 系统 结果 语言 资源 命令 地址 方式 模式 状态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 fbi调查中国网络安全事件 天支网络技术有限公司 电话 网络安全ppt模板 免费 贵州网络技术分类产品介绍 服务器是电脑么 四川省政法干警网络安全执法 战地五新手哪个服务器体验好 廊坊软件开发厂家价格 网络安全专家评论 数据库中的索引合并 根据载体数据库分类 青少年网络安全导航教育电影 无线网络技术教程大题 互联网科技公司裁员会有哪些隐患 企业网络安全配置服务器 雨花台区网络技术研究 简述网络安全的挑战 计算机网络技术网络互动 监测软件开发的步骤 3ds怎么设置网络安全模式 举例说明网络技术的应用ppt 轩雨阁网络技术服务简介 服务器双网卡不同ip如何互通 服务器只开放80端口 网络安全法维护了什么权力 我国网络安全发展现状及形势展望 云服务器后面可以改吗 泰拉瑞亚1.4手机如何开服务器 sql附加数据库失败了 基因测序服务器价格
0