节点属性评估
Node attribute evalution
我遇到了这个奇怪的问题
NoMethodError
-------------
undefined method `split' for 3:Fixnum
Cookbook Trace:
---------------
/var/chef/cache/cookbooks/maven/attributes/default.rb:27:in `from_file'
Relevant File Content:
----------------------
/var/chef/cache/cookbooks/maven/attributes/default.rb:
20: # See the License for the specific language governing permissions and
21: # limitations under the License.
22: #
23:
24: default['maven']['m2_home'] = '/usr/local/maven'
25: default['maven']['mavenrc']['opts'] = '-Dmaven.repo.local=$HOME/.m2/repository -Xmx384m'
26: default['maven']['version'] = '3.3.3'
27>> default['maven']['url'] = "http://apache.mirrors.tds.net/maven/maven-#{node['maven']['version'].split('.')[0]}/#{node['maven']['version']}/binaries/apache-maven-#{node['maven']['version']}-bin.tar.gz"
第 26 行将属性定义为“3.3.3”,这是一个字符串,拆分应该有效。
当我检查节点时,它有一个值
maven
version : 3
我把这个值改成
'3.3.3'
现在食谱可以 运行 成功了。
我假设节点属性被评估然后设置到节点。为什么我会遇到这个问题,值的变化是如何解决它的。
谢谢
您可能在过去的某个时间使用过 knife node edit
或类似的命令。直接在节点上设置的那些属性是永久性的,并且优先级高于 default
,因此它会从食谱中隐藏您的默认属性。您可以再次使用 knife node edit
来简单地从节点的 normal
部分中删除该属性,食谱默认值将接管。
我遇到了这个奇怪的问题
NoMethodError
-------------
undefined method `split' for 3:Fixnum
Cookbook Trace:
---------------
/var/chef/cache/cookbooks/maven/attributes/default.rb:27:in `from_file'
Relevant File Content:
----------------------
/var/chef/cache/cookbooks/maven/attributes/default.rb:
20: # See the License for the specific language governing permissions and
21: # limitations under the License.
22: #
23:
24: default['maven']['m2_home'] = '/usr/local/maven'
25: default['maven']['mavenrc']['opts'] = '-Dmaven.repo.local=$HOME/.m2/repository -Xmx384m'
26: default['maven']['version'] = '3.3.3'
27>> default['maven']['url'] = "http://apache.mirrors.tds.net/maven/maven-#{node['maven']['version'].split('.')[0]}/#{node['maven']['version']}/binaries/apache-maven-#{node['maven']['version']}-bin.tar.gz"
第 26 行将属性定义为“3.3.3”,这是一个字符串,拆分应该有效。
当我检查节点时,它有一个值
maven
version : 3
我把这个值改成
'3.3.3'
现在食谱可以 运行 成功了。
我假设节点属性被评估然后设置到节点。为什么我会遇到这个问题,值的变化是如何解决它的。
谢谢
您可能在过去的某个时间使用过 knife node edit
或类似的命令。直接在节点上设置的那些属性是永久性的,并且优先级高于 default
,因此它会从食谱中隐藏您的默认属性。您可以再次使用 knife node edit
来简单地从节点的 normal
部分中删除该属性,食谱默认值将接管。