Puppet 是基于 Ruby 的声明式配置管理工具,采用 Master-Agent 架构。本文以 CentOS 5.5 为例,记录 EPEL 源安装、Ruby 依赖、Facter 与 Puppet 编译安装、Master 证书签名、Agent 加入与清单应用全流程。
# 安装 EPEL 源
rpm -Uvh https://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# 安装 Ruby 及依赖
yum install mysql mysql-devel mysql-server ruby ruby-devel ruby-irb ruby-mysql ruby-rdoc ruby-ri
# 验证 Ruby 版本
ruby -v
# ruby 1.8.5 (2006-08-25) [i386-linux]
# Facter
wget https://puppetlabs.com/downloads/facter/facter-1.5.9.tar.gz
tar zxvf facter-1.5.9.tar.gz
cd facter-1.5.9
ruby install.rb
# Puppet
wget https://puppetlabs.com/downloads/puppet/puppet-2.6.3.tar.gz
tar zxvf puppet-2.6.3.tar.gz
cd puppet-2.6.3
ruby install.rb
mkdir /etc/puppet
cp conf/auth.conf /etc/puppet/
cp conf/redhat/fileserver.conf /etc/puppet/
cp conf/redhat/puppet.conf /etc/puppet/
cp conf/redhat/server.init /etc/init.d/puppetmaster
chmod +x /etc/init.d/puppetmaster
chkconfig puppetmaster on
groupadd puppet
useradd -g puppet puppet
puppetmasterd --mkusers
mkdir /var/lib/puppet/rrd
chown puppet:puppet /var/lib/puppet/rrd
/etc/init.d/puppetmaster restart
# 首次启动生成 CA 证书、主机证书等
mkdir /etc/puppet
cp conf/auth.conf /etc/puppet/
cp conf/namespaceauth.conf /etc/puppet/
cp conf/redhat/puppet.conf /etc/puppet/
cp conf/redhat/client.init /etc/init.d/puppet
chmod +x /etc/init.d/puppet
chkconfig --add puppet
chkconfig puppet on
groupadd puppet
useradd -g puppet puppet
puppetd --mkusers
/etc/init.d/puppet start
# 或手动
puppetd --test --server=master.example.com
# 查看待签名证书
puppetca --list
# 签名指定主机
puppetca --sign agent.example.com
# 或签名全部
puppetca --sign --all
# Master /etc/puppet/manifests/site.pp
node 'agent.example.com' {
file { '/tmp/puppet_test':
ensure => present,
content => "Managed by Puppet at ${timestamp}\n",
}
}
# Agent 下次运行自动应用

完成 Master/Agent 部署与证书签名,Puppet 即可实现跨平台的声明式配置管理。现代版本(Puppet 6+)建议使用 puppetserver (JRuby) 替代旧版 Ruby Master,并通过 puppet agent -t 触发应用。
CentOS 版本信息查看全攻略:內核、發行版、架構一鍵獲取
Linux 加密備份工具深度評測:Attic、Borg、Obnam、Restic、Duplicacy、Duplicati 六大去重加密備份方案對比
CentOS 6 時區錯誤修正:手動設定與 NTP 自動同步雙重保障
Debian 安裝閉源軟件包完整指南:啟用 contrib non-free 倉庫
SUSE Linux 10 建立 rc.local 實現開機自動執行腳本的兩種方法
scp 跨伺服器安全複製實戰:參數全表、壓縮/限速/指定金鑰/批次模式、與 rsync 效能對比