0

0

Linux Chef 管理节点与配置实践

舞姬之光

舞姬之光

发布时间:2026-02-23 03:35:34

|

408人浏览过

|

来源于php中文网

原创

快速定位 chef-client 失败原因:先用 chef-client -z -o 'recipe[myapp]' --log-level debug 本地模拟,查 converging 后的 processing 行;再用 knife node show 对比四层属性优先级;检查 ohai 插件命名、缓存及 safeexec 调用;template 渲染失败时用 fetch 防越界并确认节点绑定。

linux chef 管理节点与配置实践

chef-client 执行失败时怎么快速定位是 cookbook 还是 node 属性问题

绝大多数 chef-client 报错不是语法错误,而是属性被覆盖、模板变量未定义或资源条件判断失效。先别急着改 recipe,用本地模拟跑一遍最省时间。

  • 在节点上运行 chef-client -z -o 'recipe[myapp]' --log-level debug,加 -z 跳过服务端拉取,聚焦本地执行逻辑
  • 关键看日志里 Converging node 之后的 Processing 行——如果某 resource 显示 skipped due to only_if 却本该执行,大概率是 node['myapp']['enabled'] 被其他 cookbook 覆盖成了 false
  • knife node show NODE_NAME -a roles -a recipes -a automatic -a normal -a override -a default 对比四层属性来源,override 会压倒 normal,而 automatic(如 IP、平台)无法被手动修改

自定义 ohai 插件不生效的三个常见原因

写完 ohai_plugin.rb 放进 /etc/chef/ohai/plugins/node['ipaddress'] 还是旧值?不是插件没加载,而是时机或命名卡住了。

  • 文件名必须全小写、下划线分隔,且与插件内 provides 的键名严格一致,比如 my_network.rb 里写 provides 'my_network',才能通过 node['my_network']['gateway'] 访问
  • ohai 默认只在 chef-client 启动时运行一次,改完插件后必须加 --force-formats 或删掉 /var/chef/ohai/cache/ 下缓存,否则读的是旧快照
  • 插件里调用 shell 命令要用 Ohai::Util::SafeExec.new 包裹,裸写 `ip route | grep default` 在非交互式 chef-client 下会静默失败

cookbook 中 template 资源渲染失败:变量存在但值为空

template 渲染出空文件或报 undefined method `[]' for nil:NilClass,往往不是变量没传,而是层级访问越界了。

TeemIp - IPAM and DDI solution
TeemIp - IPAM and DDI solution

TeemIp是一个免费、开源、基于WEB的IP地址管理(IPAM)工具,提供全面的IP管理功能。它允许您管理IPv4、IPv6和DNS空间:跟踪用户请求,发现和分配IP,管理您的IP计划、子网空间、区域和DNS记录,符合最佳的DDI实践。同时,TeemIp的配置管理数据库(CMDB)允许您管理您的IT库存并将您的配置项(CIs)与它们使用的IP关联起来。项目源代码位于https://github.com/TeemIP

下载
  • 检查传入的变量是否真在当前作用域:在 template 文件开头加 ,确认 node['myapp'] 是否为 nil(注意不是空哈希)
  • 避免硬编码嵌套访问,用 node.fetch('myapp', {})['config'].fetch('port', 8080) 替代 node['myapp']['config']['port'],防止中间某层为 nil
  • 如果依赖 role 或 environment 设置的属性,确认该节点已正确绑定——knife node run_list set NODE_NAME "role[web]" 不等于自动应用,得再跑一次 chef-client

knife ssh 批量执行命令但部分节点超时或权限拒绝

knife ssh 不是简单封装 ssh,它走的是 Chef Server 的节点元数据 + SSH 密钥分发链路,失败点常不在网络本身。

  • 默认超时是 60 秒,短任务没问题,但跑 chef-client -i 3600 就必然断连,必须加 --ssh-timeout 7200
  • 权限拒绝通常因为 knife 用的是 ~/.chef/knife.rb 里配置的 ssh_user,但目标节点上该用户没配好 sudo 权限或没部署公钥——用 knife ssh 'name:web*' 'whoami' --ssh-user ubuntu 先验证基础连通性
  • 如果节点用的是非标准 SSH 端口,不能只靠 --ssh-port,得在节点的 automatic 属性里补上 ipaddressnetwork/interfaces/eth0/address,否则 knife 会按默认 22 端口连错地址

属性优先级、ohai 加载时机、template 变量解析路径——这些不是孤立机制,而是环环相扣的链条。改一处,最好顺手查一层上游来源,不然修完 A 又冒出 B。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
504 gateway timeout怎么解决
504 gateway timeout怎么解决

504 gateway timeout的解决办法:1、检查服务器负载;2、优化查询和代码;3、增加超时限制;4、检查代理服务器;5、检查网络连接;6、使用负载均衡;7、监控和日志;8、故障排除;9、增加缓存;10、分析请求。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

604

2023.11.27

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

230

2023.12.07

resource是什么文件
resource是什么文件

Resource文件是一种特殊类型的文件,它通常用于存储应用程序或操作系统中的各种资源信息。它们在应用程序开发中起着关键作用,并在跨平台开发和国际化方面提供支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

169

2023.12.20

undefined是什么
undefined是什么

undefined是代表一个值或变量不存在或未定义的状态。它可以作为默认值来判断一个变量是否已经被赋值,也可以用于设置默认参数值。尽管在不同的编程语言中,undefined可能具有不同的含义和用法,但理解undefined的概念可以帮助我们更好地理解和编写程序。本专题为大家提供undefined相关的各种文章、以及下载和课程。

5755

2023.07.31

网页undefined是什么意思
网页undefined是什么意思

网页undefined是指页面出现了未知错误的意思,提示undefined一般是在开发网站的时候定义不正确或是转换不正确,或是找不到定义才会提示undefined未定义这个错误。想了解更多的相关内容,可以阅读本专题下面的文章。

3234

2024.08.14

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

1351

2025.12.25

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

230

2023.12.07

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1520

2023.06.21

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1030

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.5万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号