温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎样用Chef批量管服务器

发布时间:2026-10-03 08:17:46 来源:亿速云 阅读:100 作者:小樊 栏目:系统运维

下面用实战视角讲清楚:怎样用 Chef 批量管理服务器。内容从“整体思路 → 核心组件 → 典型流程 → 示例 → 最佳实践”逐步展开。


一、Chef 批量管理的核心思路

Chef 的本质是:
把服务器配置写成代码(Cookbook / Recipe),然后批量推送到多台服务器执行。

批量管理的关键点:

  • 一次写好配置,多台复用
  • 集中管理节点(Node)
  • 自动收敛(Converge)到期望状态

二、Chef 的核心组件(必须先搞清楚)

1. Chef Server(中枢)

  • 存储:
    • Cookbook(配置代码)
    • Node 信息(每台服务器状态)
    • Role / Environment / Databag
  • 所有 Node 向 Server 拉取配置

2. Chef Workstation(你工作的机器)

  • 写 Cookbook
  • 上传到 Chef Server
  • 常用工具:knife、chef、berkshelf

3. Chef Client(被管理的服务器)

  • 每台服务器安装
  • 定时或手动运行:
chef-client
  • 从 Server 拉配置并执行

三、典型批量管理流程(重点)

流程概览

Workstation
   |
   | 写 Cookbook
   |
   v
Chef Server
   |
   | 分发
   v
多台 Node(自动执行)

四、快速上手示例(批量装 Nginx)

1️⃣ 在 Workstation 初始化 Cookbook

chef generate cookbook my_nginx
cd my_nginx

2️⃣ 写 Recipe(核心逻辑)

recipes/default.rb

package 'nginx' do
  action :install
end

service 'nginx' do
  action [:enable, :start]
end

3️⃣ 上传 Cookbook 到 Server

knife cookbook upload my_nginx

4️⃣ 给多台服务器批量加 Run List

knife node run_list add node1 'recipe[my_nginx]'
knife node run_list add node2 'recipe[my_nginx]'
knife node run_list add node3 'recipe[my_nginx]'

Run List = 这台服务器“该干什么”

5️⃣ 在每台服务器执行

chef-client

或设置定时任务(生产常用):

*/15 * * * * /usr/bin/chef-client > /dev/null 2>&1

五、Role:批量管理的“核心武器”

当服务器变多,不要一台台加 Run List

定义 Role(比如 web 服务器)

roles/web.rb

name 'web'
run_list(
  'recipe[my_nginx]',
  'recipe[base]'
)

上传:

knife role from file web.rb

批量应用:

knife node run_list add node1 'role[web]'
knife node run_list add node2 'role[web]'

✅ 以后改 Role,所有 web 服务器自动生效


六、Environment(区分环境)

例如:

  • dev
  • test
  • prod
name 'prod'
default_attributes(
  nginx: {
    worker_processes: 8
  }
)

七、Data Bag(敏感/差异化配置)

适合:

  • 密码
  • 数据库地址
  • 不同业务参数

加密示例:

knife data bag create secrets

data_bags/secrets/db.json

{
  "id": "db",
  "password": "supersecret"
}

Recipe 中使用:

db = data_bag_item('secrets', 'db')

八、批量管理的常见模式

✅ 模式 1:角色驱动

Role → Node

✅ 模式 2:环境 + 角色

Environment + Role → Node

✅ 模式 3:自动发现(进阶)

  • 配合 chef-provisioning
  • 或 Terraform + Chef

九、生产最佳实践(很重要)

✅ 所有配置进代码,不手工改服务器
✅ Cookbook 版本化(Berksfile / Policyfile)
✅ 小 Recipe,单一职责
✅ 先 test kitchen 测试,再上生产
✅ Chef Client 定时跑,保证一致性


十、如果你只是想“快速批量管”

  • 小团队:Chef Zero + knife
  • 中大型:Chef Server
  • 云上:Chef Automate

如果你愿意,我可以:

  • 给你一个 完整可跑的 Chef 项目结构
  • 讲 Chef vs Ansible 怎么选
  • 给你一个 100 台服务器批量初始化方案

你现在是想用在 公司生产环境 还是 学习/实验?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手