1
我想创建一个厨师配方取决于tomcat
菜谱如厨师配方编译失败
tomcat_user = node[:tomcat][:user]
tomcat_user_home_folder = node[:etc][:passwd][tomcat_user][:dir]
execute "Install jasper license" do
command "cp jasperserver.license #{tomcat_user_home_folder}/"
cwd "#{node["install-jasper-license"]["license-location"]}"
end
当我的节点上运行sudo chef-client
,我得到以下错误:
================================================================================
Recipe Compile Error in /var/chef/cache/cookbooks/install-jasper-license/recipes/default.rb
================================================================================
NoMethodError
-------------
undefined method `[]' for nil:NilClass
在我看来,这个食谱找不到node[:etc][:passwd][tomcat_user]
。当tomcat配方运行时,将会安装一个tomcat用户。我还在本食谱的metadata.rb中添加了depends 'tomcat'
。我的意图是在运行tomcat的用户的家中安装一个文件。我该如何解决它?
可以用懒惰属性评估来解决吗? http://docs.opscode.com/resource_common.html#lazy-attribute-evaluation –
你也可以在'execute'或'ruby_block'中使用惰性评估。您仍然需要重新加载ohai,以便您可以访问用户信息。 –