在 Chef 里,“管理多节点(Node)”的核心思想是:用同一个 Chef Server 集中管理大量节点,通过 Role / Environment / Policy / Cookbook 区分差异。
下面按“架构 → 节点注册 → 配置管理 → 批量控制”来系统说明。
典型架构:
Chef Workstation
|
v
Chef Server <----> Nodes (Linux / Windows)
组件说明:
在 Workstation 上执行:
knife bootstrap node1.example.com \
-x ubuntu -i key.pem \
--sudo -N web-server-01
作用:
client.pemknife node list
knife node show web-server-01
Role = 一类节点的职责
# roles/web.rb
name "web"
run_list "recipe[nginx]", "recipe[app]"
上传:
knife role from file web.rb
给节点指定 Role:
knife node run_list add web-server-01 role[web]
✅ 适合:
# environments/prod.rb
name "prod"
cookbook_versions({
"nginx" => "= 2.0.0"
})
knife environment from file prod.rb
knife node environment set web-server-01 prod
✅ 适合:
name 'web-policy'
run_list 'web', 'nginx'
default_source :supermarket
chef install
chef push prod web-policy
✅ 更适合:
knife node edit web-server-01
{
"nginx": {
"port": 8080
}
}
优先级:
Node > Role > Environment > Cookbook
knife ssh 'role:web' 'sudo systemctl restart nginx'
或:
knife ssh 'name:web-*' 'uptime'
节点上:
chef-client
或 systemd timer / cron:
0 * * * * /usr/bin/chef-client
knife status
knife search node 'platform:ubuntu'
可结合:
✅ 使用 Role + Environment
✅ 节点只做“少量差异”
✅ Cookbook 保持通用
✅ 用 knife search 做批量操作
✅ 大团队用 Policyfile
如果你愿意,我可以:
你更想看哪一个?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。