Chef 是一种基础设施即代码(Infrastructure as Code, IaC)工具,用来自动化配置和管理服务器。下面从概念 → 架构 → 安装 → 编写食谱 → 部署执行给你一个完整上手指南。
| 概念 | 说明 |
|---|---|
| Chef Server | 中心服务器,存储配置(Cookbooks、Roles、Environments) |
| Chef Workstation | 你写代码、测试、上传配置的地方 |
| Chef Client(Node) | 被管理的服务器,定期向 Chef Server 拉取配置并执行 |
| Cookbook | 配置包(类似“模块”) |
| Recipe | Cookbook 中的具体配置脚本(Ruby DSL) |
| Resource | 最小操作单位(如 package、service、file) |
Workstation
|
| knife / upload
v
Chef Server
|
| pull config
v
Managed Nodes (Linux/Windows)
# macOS
brew install chef-workstation
# Ubuntu
curl -L https://omnitruck.chef.io/install.sh | sudo bash -s -- -P chef-workstation
验证:
chef --version
knife --version
chef generate repo mychef
cd mychef
目录结构:
cookbooks/
environments/
roles/
data_bags/
chef generate cookbook cookbooks/nginx
cookbooks/nginx/recipes/default.rb
package 'nginx' do
action :install
end
service 'nginx' do
action [:enable, :start]
end
file '/var/www/html/index.html' do
content '<h1>Hello from Chef</h1>'
end
knife configure
knife cookbook upload nginx
knife bootstrap node_ip \
-x ubuntu \
-i ~/.ssh/id_rsa \
-N web01
knife node run_list add web01 'recipe[nginx]'
sudo chef-client
user 'deploy' do
action :create
end
directory '/opt/app' do
owner 'deploy'
mode '0755'
end
template '/etc/nginx/nginx.conf' do
source 'nginx.conf.erb'
end
✅ 多台服务器统一配置
✅ 配置可追溯、可回滚
✅ DevOps / 自动化运维
❌ 小规模手动服务器(成本偏高)
如果你愿意,我可以:
你想从哪一步开始?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。