运维: 今天给50台机器装个补丁,明天发现20台配置跑偏了,后天某台服务突然抽风…这种日子,用同行老张的话说:"不是在救火,就是在找灭火器的路上"。
Puppet是什么

Puppet是一款开源的配置管理工具,专门用于自动化管理服务器和基础设施。它的核心思想是"基础设施即代码"(Infrastructure as Code),通过编写代码来定义服务器的目标状态,从而实现对大规模服务器集群的高效管理。无论是几十台还是上千台服务器,Puppet都能帮你轻松搞定。
简单来说,Puppet就像是一个"服务器管家",它确保每台服务器的配置都符合预期,避免人为失误和配置漂移。无论是安装软件、管理用户权限,还是配置网络服务,Puppet都能自动化完成。
功能特点
-
声明式语言
Puppet使用声明式语法,你只需要告诉它"服务器应该是什么状态",而不需要关心具体的实现步骤。比如,你可以写一段代码声明"所有服务器必须安装Nginx并启动服务",Puppet会自动判断如何实现这一目标。
-
跨平台支持
Puppet支持多种操作系统,包括Linux、Windows、macOS等。无论你的服务器环境多么复杂,Puppet都能统一管理。
-
自动化与自愈能力
Puppet会定期检查服务器的配置状态,如果发现配置被修改或偏离预期,它会自动修复。这种自愈能力大大减少了运维人员的工作量。
-
模块化设计
Puppet的模块化设计让配置管理更加灵活。你可以将常用的配置(如安装Apache、配置防火墙)封装成模块,然后在不同的服务器上复用。
-
强大的社区支持
Puppet拥有活跃的社区和丰富的资源,Puppet Forge上有成千上万的现成模块,可以直接拿来使用。

使用指南
服务端安装
-
添加 Puppet 官方仓库
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates
wget https://apt.puppet.com/puppet7-release-focal.deb
sudo dpkg -i puppet7-release-focal.deb
sudo apt-get update -
安装 Puppet Serve
sudo apt-get install -y puppetserver
-
启动 Puppet Server
sudo systemctl enable --now puppetserver
-
验证服务状态
sudo systemctl status puppetserver
客户端安装
-
添加 Puppet 官方仓库(与服务端相同): sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates
wget https://apt.puppet.com/puppet7-release-focal.deb
sudo dpkg -i puppet7-release-focal.deb
sudo apt-get update -
安装 Puppet Agent sudo apt-get install -y puppet-agent
-
启动 Puppet Agent sudo systemctl enable --now puppet
-
验证服务状态 sudo systemctl status puppet
案例演示-使用 Puppet 批量安装 Nginx
-
创建 Nginx 模块
在 服务端,创建 Nginx 模块目录结构:
mkdir -p /etc/puppetlabs/code/environments/production/modules/nginx/{manifests,files}
-
编写 Nginx 模块配置文件
在 /etc/puppetlabs/code/environments/production/modules/nginx/manifests/init.pp
中添加以下内容:
class nginx {
package { 'nginx':
ensure => installed,
}
service { 'nginx':
ensure => running,
enable => true,
subscribe => Package['nginx'],
}
file { '/etc/nginx/conf.d/default.conf':
ensure => present,
content => "server { listen 80; server_name localhost; location / { return 200 'Hello, Puppet!'; } }",
notify => Service['nginx'],
}
}
-
应用模块到目标节点
在 /etc/puppetlabs/code/environments/production/manifests/site.pp
中添加以下内容:
node 'agent1.example.com', 'agent2.example.com' {
include nginx
}
-
在目标节点运行 Puppet Agent
在每个客户端运行以下命令,应用配置:
sudo puppet agent -t

-
验证 Nginx 是否安装成功
在客户端运行以下命令,验证 Nginx 是否运行正常:
sudo systemctl status nginx
curl http://localhost
如果返回 "Hello, Puppet!",则说明安装成功。
在实际使用中,Puppet 让运维人员摆脱了重复操作、降低失误概率,同时,简化了工作流程,将复杂事务贯彻到底。依据前文所述,Puppet 凭借配置管理、多平台兼容、精细模块架构与集中监控等多重优势,持续展现出卓越的性能。
近期文章:
|
原文始发于微信公众号(开源运维):
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/313091.html