2

I'm using chef-solo and maintaining community cookbooks using berkshelf. Installed iptables cookbook using berkshelf recently and it threw the following error once I ran chef-solo.

RuntimeError
------------
File templates/default/rebuild-iptables.erb does not exist for cookbook iptables

Resource Declaration:
---------------------
# In /home/directfn/.berkshelf/cookbooks/iptables-2.0.1/recipes/default.rb

 35: template '/usr/sbin/rebuild-iptables' do
 36:   source 'rebuild-iptables.erb'
 37:   mode '0755'
 38:   variables(
 39:     hashbang: ::File.exist?('/usr/bin/ruby') ? '/usr/bin/ruby' : '/opt/chef/embedded/bin/ruby'
 40:   )
 41: end
 42: 

But I can see the template source is there.

[root@euca-172-16-10-197 chef-repo]# ls /home/directfn/.berkshelf/cookbooks/iptables-2.0.1/templates/default/rebuild-iptables.erb 
/home/directfn/.berkshelf/cookbooks/iptables-2.0.1/templates/default/rebuild-iptables.erb

But if I copy the iptables cookbook to where I have rest of my cookbooks are, it works like a charm. And I'm using more than 30 other community cookbooks using berkshelf without any problem.

Does anyone have an idea what is going on here?

Thanks in advance

solo.rb file

file_cache_path "/home/directfn/devops/chef-solo"
cookbook_path [
  "/home/directfn/devops/chef-repo/cookbooks",
  "/home/directfn/.berkshelf/cookbooks"
  ]
data_bag_path "/home/directfn/devops/chef-repo/data_bags"
environment "development"
environment_path "/home/directfn/devops/chef-repo/environments"

Json attributes file:

{
  "name": "phoenix_new",
  "description": "",
  "java": {
        "install_flavor": "oracle", 
        "jdk_version": 7,
        "oracle": {
                "accept_oracle_download_terms": true
        }
  },
  "phoenix": {
        "tag": "dbfs_release_0"
  },
  "run_list": [
                "recipe[phoenix::simple]"
  ],
  "env_run_lists": {

  }
}
  • How exactly are you running solo? You shouldn't see the raw paths from the `.berkshelf` folder normally. – coderanger Dec 04 '15 at 01:46
  • I'm running the following command from chef-repo directory. `chef-solo -c solo.rb -j phoenix_new.json`. I have edited the command with the content of solo.rb and json attributes file. Thanks. – Pubudu Perera Dec 04 '15 at 08:27

1 Answers1

3

chef-solo cannot use the cookbooks under .berkshelf/ directly. You should use berks vendor to reformat them into a structure that Chef can deal with better.

coderanger
  • 52,400
  • 4
  • 52
  • 75