自动化运维工具Puppet的详细培训教程

admin 2026-02-10 14:49:21 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了Puppet自动化运维工具的安装配置与使用,涵盖Master与Agent部署、证书认证、清单编写、模块开发及Hiera数据管理。通过声明式语言实现服务器集群的统一配置管理,适合运维人员快速上手基础设施自动化,内容实操性强但属于基础入门教程。 综合评分: 65 文章分类: 安全培训,安全工具,安全建设


cover_image

自动化运维工具Puppet的详细培训教程

原创

刘军军 刘军军

运维星火燎原

2026年2月9日 00:00 河北

一、Puppet概述

Puppet是一款开源的配置管理和基础设施自动化工具,通过声明式配置语言定义系统期望状态,自动确保实际状态与期望状态一致。适用于大规模服务器集群的统一配置管理、应用部署等场景。

二、环境准备与安装

  1. 安装Puppet Master(以CentOS 7为例)
  • 步骤1:添加Puppet YUM源
  sudo rpm -ivh https://yum.puppet.com/puppet6-release-el-7.noarch.rpm
  sudo yum update -y
  • 步骤2:安装Puppetserver
  sudo yum install puppetserver -y
  • 步骤3:配置Puppetserver内存

编辑/etc/sysconfig/puppetserver,调整JVM内存(根据实际配置):

JAVA_ARGS="-Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
  • 步骤4:启动Puppetserver并设置开机自启
  sudo systemctl start puppetserver
  sudo systemctl enable puppetserver

2. 安装Puppet Agent(以CentOS 7为例)

  • 步骤1:添加Puppet YUM源

同Master步骤1。

  • 步骤2:安装puppet-agent
  sudo yum install puppet-agent -y
  • 步骤3:配置Agent连接Master

编辑/etc/puppetlabs/puppet/puppet.conf:

[main]
server = puppetmaster.example.com  # Puppet Master的域名或IP
runinterval = 30m  # 每30分钟检查一次配置差异
[agent]
environment = production  # 环境名称,默认生产环境
  • 步骤4:启动Agent并设置开机自启
  sudo systemctl start puppet
  sudo systemctl enable puppet

三、证书认证与通信

  1. 查看待签名的Agent证书

在Puppet Master上执行:

sudo puppetserver calist

输出示例:

+ "webserver-01.example.com" (SHA256) 5A:6B:7C:8D:9E:0F:1A:2B:3C:4D:5E:6F:7G:8H:9I:0J
  1. 签名Agent证书
  • 签名所有待认证的Agent
  sudo puppetserver casign --all
  • 签名单个Agent
  sudo puppetserver casign --certname webserver-01.example.com

四、编写Puppet清单(Manifest)

Puppet清单是定义系统配置的核心文件,使用.pp后缀。

示例:安装并启动Nginx服务

# 文件路径:/etc/puppetlabs/code/environments/production/manifests/site.pp
node 'webserver-01.example.com' {  # 匹配Agent的certname
  # 确保Nginx包存在
  package { 'nginx':
    ensure => present,
  }
  # 确保Nginx服务运行并开机自启
  service { 'nginx':
    ensure => running,
    enable => true,
    require => Package['nginx'],  # 依赖Nginx包安装
  }
}

五、应用配置到Agent

  1. 手动触发Agent应用配置

在Agent主机上执行:

sudo puppet agent -t  # 手动触发Agent检查配置并应用
  1. 验证配置生效

登录Agent主机,检查Nginx状态:

systemctl status nginx

若输出显示Nginx已启动且开机自启,则配置生效。

六、Puppet模块开发

Puppet模块遵循标准结构,便于代码复用和管理。

  1. 模块结构示例
mynginx/
├── files  # 存放静态文件
│   └── nginx.conf
├── manifests
│   ├── init.pp  # 模块入口文件
│   └── install.pp
├── templates  # 存放模板文件
│   └── nginx.conf.erb
└── metadata.json  # 模块元数据
  1. 示例:编写安装配置Nginx的模块
  • 步骤1:创建模块
  sudo puppet modulegeneratemynginx  # 生成mynginx模块骨架
  • 步骤2:编辑模块入口文件manifests/init.pp
  classmynginx{
    include mynginx::install  # 引入安装类
    include mynginx::config  # 引入配置类
    include mynginx::service  # 引入服务类
  }
  • 步骤3:编写安装类manifests/install.pp
  class mynginx::install {
    package { 'nginx':
      ensure => present,
    }
  }
  • 步骤4:编写配置类manifests/config.pp
  class mynginx::config {
    file { '/etc/nginx/nginx.conf':
  ensure  => file,
  source  =>'puppet:///modules/mynginx/nginx.conf',  # 引用files目录下的文件
      owner   => 'root',
  group   =>'root',
  mode    =>'0644',
  require => Package['nginx'],
    }
  }
  • 步骤5:编写服务类manifests/service.pp
  class mynginx::service {
    service { 'nginx':
      ensure  => running,
      enable  =>true,
      require => File['/etc/nginx/nginx.conf'],
    }
  }

七、Hiera数据管理

Hiera用于集中管理配置数据,实现配置与代码分离。

  1. 安装Hiera
sudo yum install hiera -y  # CentOS/RHEL
# Ubuntu/Debian:sudo apt install hiera
  1. 配置Hiera

编辑/etc/puppetlabs/puppet/hiera.yaml:

---
version: 5
defaults:
  datadir: /etc/puppetlabs/code/environments/%{environment}/hieradata
  data_hash: yaml_data
hierarchies:
  - name: "Per-node data"
    path: "nodes/%{trusted.certname}.yaml"
  1. 使用Hiera管理配置

例如,在hieradata/nodes/webserver-01.example.com.yaml中定义:

nginx::port: 8080  # 覆盖模块中Nginx的默认端口

在模块的manifests/config.pp中使用Hiera取值:

classmynginx::config {
  $nginx_port = hiera('nginx::port', 80)  # 默认值80
  file { '/etc/nginx/nginx.conf':
    content => template('mynginx/nginx.conf.erb'),
    # 模板中可使用$nginx_port变量
  }
}

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:运维星火燎原 刘军军 刘军军《自动化运维工具Puppet的详细培训教程》

评论:0   参与:  4