节点属性评估

时间:2016-04-14 13:54:43

标签: chef

我有这个奇怪的问题

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'

现在配方可以成功运行。

我假设评估节点属性然后设置为节点。我为什么要面对这个问题,以及价值的变化是如何解决的。

由于

1 个答案:

答案 0 :(得分:0)

您可能在过去的某个时间使用过knife node edit或类似的命令。直接在节点上设置的那些属性是永久性的,优先级高于default,因此它会从cookbook中隐藏您的默认属性。您可以再次使用knife node edit从节点的normal部分删除该属性,并且菜谱默认将接管。