使用knife search node查询名称含特殊格式的JDK包问题
解决Knife Search查询含点号的Package属性问题
嘿,这个问题我之前处理过!核心原因是Chef默认会把属性名里的点号解析成嵌套属性的分隔符,但你的jdk1.7是一个独立的顶级package属性键,不是jdk下的7子属性,所以直接用.访问会出错。这里有两种简单有效的解决方法:
方法1:用单引号包裹属性名
在knife search命令里,把带点号的属性名用单引号括起来,明确告诉Chef这是一个完整的属性键,避免被拆分成嵌套结构:
knife search node myname123 -a 'package.jdk1.7'
注意:单引号在bash/zsh等shell环境下很重要,能防止shell把点号解析成特殊字符
方法2:使用属性数组索引语法
另一种方式是用数组索引的形式访问属性,把属性名作为字符串传入:
knife search node myname123 -a "package['jdk1.7']"
这种写法同样能精准识别jdk1.7这个完整属性键,不会触发嵌套解析逻辑。
快速验证小技巧
如果不确定属性结构,先执行下面的命令查看所有package属性,确认jdk1.7的位置:
knife node show myname123 -a package
确认后再用上面的命令查询,就能得到你想要的结果,比如:
jdk1.7:
arch: x86_64
epoch: 2000
installdate: 1518121328
release: fcs
version: 1.7.0_171
内容的提问来源于stack exchange,提问作者David Sumner
相关产品推荐
相关产品推荐

