温馨提示×

温馨提示×

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

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

如何用Chef做服务器运维

发布时间:2026-10-23 21:46:00 来源:亿速云 阅读:97 作者:小樊 栏目:系统运维

Chef 是一个基于代码的自动化配置管理工具(Infrastructure as Code),常用于服务器初始化、应用部署、配置一致性管理等场景。下面从概念 → 安装 → 实战示例 → 运维建议系统讲一下。


一、Chef 核心概念(先搞懂这些)

概念 说明
Chef Server 中央管理节点,存放 Cookbook、Node 信息
Chef Workstation 你写代码、测试、上传 Cookbook 的机器
Chef Client 被管理的服务器,定期向 Server 拉取配置并执行
Cookbook 配置管理的“包”,包含 Recipe、属性、模板等
Recipe 具体执行逻辑(用 Ruby 写)
Resource 操作单元(package / service / file / template 等)
Node 被管理的服务器对象
Role / Environment 用于分组和区分环境(prod / test)

二、典型运维架构

Workstation
   |
   | knife upload
   v
Chef Server
   |
   | chef-client run
   v
Node1 / Node2 / Node3

三、快速开始(以 Linux 为例)

1. 安装 Chef Workstation

# macOS
brew install chef-workstation

# Ubuntu
curl -L https://omnitruck.chef.io/install.sh | sudo bash -s -- -P chef-workstation

验证:

chef --version
knife --version

2. 初始化 Cookbook

chef generate cookbook my_server
cd my_server

目录结构:

my_server/
├── recipes/
│   └── default.rb
├── attributes/
├── templates/
└── metadata.rb

3. 写第一个 Recipe(示例:装 Nginx)

recipes/default.rb

package 'nginx' do
  action :install
end

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

template '/etc/nginx/nginx.conf' do
  source 'nginx.conf.erb'
  notifies :reload, 'service[nginx]'
end

4. 使用 Template

templates/default/nginx.conf.erb

worker_processes <%= node['my_server']['worker_processes'] %>;

attributes/default.rb

default['my_server']['worker_processes'] = 4

5. 上传到 Chef Server

knife cookbook upload my_server

6. 给 Node 分配 Recipe

knife node run_list add node1 'recipe[my_server]'

7. 在服务器上执行

sudo chef-client

四、常见运维场景示例

✅ 用户和权限管理

user 'deploy' do
  home '/home/deploy'
  shell '/bin/bash'
  action :create
end

✅ 定时任务

cron 'backup' do
  minute '0'
  hour '2'
  command '/usr/bin/backup.sh'
end

✅ 文件分发

cookbook_file '/etc/foo.conf' do
  source 'foo.conf'
  mode '0644'
end

五、和纯 Shell 脚本比,Chef 强在哪?

对比项 Shell Chef
幂等性 ❌ ✅
可版本控制 ❌ ✅
大规模管理 难 易
状态一致性 弱 强

六、运维最佳实践

  1. 一切用 Cookbook 管理,不要手动改服务器
  2. 环境分离(dev / test / prod)
  3. Recipe 保持小而单一职责
  4. 用 chef-client -o 做临时调试
  5. CI 中做 Cookbook 测试(chef-spec / kitchen)
  6. 关键变更先 kitchen 测试再上生产

七、适合 / 不适合

✅ 适合:

  • 服务器数量 ≥ 10
  • 多环境
  • 配置频繁变化

❌ 不适合:

  • 临时 1–2 台机器
  • 简单一次性任务

如果你愿意,我可以:

  • 给你一个完整生产级 Cookbook 示例
  • 对比 Chef vs Ansible vs Terraform
  • 写一个 Web 服务自动化部署 Cookbook

你现在是打算用 Chef 管什么系统?

向AI问一下细节

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

AI
助
手