CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
DevOps 配置与平台/课时/Puppet
RawBlame
课时目录12 节

DevOps 配置与平台

  1. 01配置管理概览
  2. 02Chef 与 Salt
  3. 03Puppet
  4. 04OpenShift
  5. 05Azure 平台
  6. 06云原生工具
  7. 07操作系统发行版
  8. 08平台搭建方法论
  9. 09代理与负载均衡
  10. 10云函数
  11. 11数据与平台设计
  12. 12综合练习

Puppet

puppet;Master-Agent 模型。

25 分钟

Puppet

Puppet 是最早大规模商用的 声明式配置管理 平台之一,以 Puppet DSL(类资源模型) 和严格的 Master-Agent + PuppetDB 架构著称。与 dcp-chef 中的 Chef/Salt 并列,Puppet 在电信、金融等传统企业数据中心仍有大量部署。本课帮助你在 /roadmaps/devops 的 configuration-management 节点上理解 Catalog 编译、RAS 模型、Hiera 分层数据;基础设施创建仍归 terraform-essentials,容器编排见 kubernetes-essentials。

学习目标

  • 读懂 Puppet Manifest、Class、Define、Resource 基本语法
  • 理解 Master 编译 Catalog → Agent 应用 的完整流程
  • 会用 Hiera 5 按环境/角色注入参数,避免硬编码

Master-Agent 工作流

Manifest + Hiera 数据
    → Puppet Master 编译 Catalog(每台 Node 一份)
    → Agent (puppet agent) 拉取 Catalog
    → 对比当前状态,应用 Resource 变更
    → 上报 Report → PuppetDB / Puppet Enterprise Console

Agent 默认 30 分钟 拉取一次;也可 puppet agent -t 手动触发。Catalog 是 纯声明式资源列表,不含命令式脚本逻辑——复杂逻辑应拆到 自定义 Type/Provider 或外部模块。

Manifest 示例

# manifests/site.pp
node 'coderoadmap-web-01' {
  include nginx
  include coderoadmap::backend
}

# modules/nginx/manifests/init.pp
class nginx {
  package { 'nginx':
    ensure => installed,
  }
  service { 'nginx':
    ensure => running,
    enable => true,
    require => Package['nginx'],
  }
  file { '/etc/nginx/conf.d/coderoadmap.conf':
    ensure  => file,
    content => template('nginx/coderoadmap.conf.erb'),
    notify  => Service['nginx'],
  }
}
# hiera.yaml(Hiera 5 层级示例)
version: 5
defaults:
  datadir: data
  data_hash: yaml_data
hierarchy:
  - name: "Per-node"
    path: "nodes/%{trusted.certname}.yaml"
  - name: "Environment"
    path: "envs/%{server_facts.environment}.yaml"
  - name: "Common"
    path: "common.yaml"
# data/common.yaml
coderoadmap::backend::port: 8080
coderoadmap::backend::db_host: '127.0.0.1'

Puppet 生态要点

  • Forge 模块:puppet module install puppetlabs-nginx 复用社区模块
  • Roles & Profiles 模式:Role 描述「这台机器是什么」;Profile 描述「某技术栈怎么配」
  • Puppet Enterprise:RBAC、编排、Impact Analysis;开源版用 Puppet Server + Foreman 也可搭建 GUI
  • 与 devops-cloud-essentials 结合:Terraform 创建 VM 后,cloud-init 或 kickstart 安装 Agent 并注册 Master,CM 接管后续变更。

    练习

    • 写一个 Puppet Class,确保 mysql-server 安装且 mysqld 运行,并用 Hiera 注入 bind-address
    • 画出 CodeRoadMap 三台 VM(web / backend / db)的 Roles & Profiles 分层图
    • 对比 Puppet Catalog 与 Chef Run List 在「编译时机、资源依赖表达」上的异同

    小结

    Puppet = Master 编译 Catalog + Agent 声明式收敛 + Hiera 分层数据。 适合需要强审计、RBAC 与大规模 Node 分类的企业 CM。下一课转向 OpenShift 企业级 K8s 平台。

    加载本节练习…
    ← 上一课Chef 与 Salt下一课 →OpenShift