熬夜改配置到秃头? 10分钟搞定千台服务器




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

Puppet是什么

熬夜改配置到秃头? 10分钟搞定千台服务器

Puppet是一款开源的配置管理工具,专门用于自动化管理服务器和基础设施。它的核心思想是"基础设施即代码"(Infrastructure as Code),通过编写代码来定义服务器的目标状态,从而实现对大规模服务器集群的高效管理。无论是几十台还是上千台服务器,Puppet都能帮你轻松搞定。

简单来说,Puppet就像是一个"服务器管家",它确保每台服务器的配置都符合预期,避免人为失误和配置漂移。无论是安装软件、管理用户权限,还是配置网络服务,Puppet都能自动化完成。

功能特点

  • 声明式语言

Puppet使用声明式语法,你只需要告诉它"服务器应该是什么状态",而不需要关心具体的实现步骤。比如,你可以写一段代码声明"所有服务器必须安装Nginx并启动服务",Puppet会自动判断如何实现这一目标。

  • 跨平台支持

Puppet支持多种操作系统,包括Linux、Windows、macOS等。无论你的服务器环境多么复杂,Puppet都能统一管理。

  • 自动化与自愈能力

Puppet会定期检查服务器的配置状态,如果发现配置被修改或偏离预期,它会自动修复。这种自愈能力大大减少了运维人员的工作量。

  • 模块化设计

Puppet的模块化设计让配置管理更加灵活。你可以将常用的配置(如安装Apache、配置防火墙)封装成模块,然后在不同的服务器上复用。

  • 强大的社区支持

Puppet拥有活跃的社区和丰富的资源,Puppet Forge上有成千上万的现成模块,可以直接拿来使用。

熬夜改配置到秃头? 10分钟搞定千台服务器

使用指南

服务端安装

  • 添加 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
熬夜改配置到秃头? 10分钟搞定千台服务器
  • 验证 Nginx 是否安装成功

在客户端运行以下命令,验证 Nginx 是否运行正常:

sudo systemctl status nginx
curl http://localhost

如果返回 "Hello, Puppet!",则说明安装成功。

在实际使用中,Puppet 让运维人员摆脱了重复操作、降低失误概率,同时,简化了工作流程,将复杂事务贯彻到底。依据前文所述,Puppet 凭借配置管理、多平台兼容、精细模块架构与集中监控等多重优势,持续展现出卓越的性能。

近期文章:


原文始发于微信公众号(开源运维):

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/313091.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!