0
votes

I'm getting an error when I am trying to use Vagrant/Chef for setting up a dev environment for a rails application. The error is coming from the application cookbook provided by opscode, but I'm unable to figure it out. I am assuming I'm missing a configuration setting, but the docs are pretty sparse. Full details of the error and relevant files are below.

The log for the error I'm receiving:

.
.
.
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: execute[passenger_module] ran successfully
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: Processing template[/etc/apache2/mods-available/passenger.load] action create (passenger_apache2::mod_rails line 28)
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: Processing template[/etc/apache2/mods-available/passenger.conf] action create (passenger_apache2::mod_rails line 37)
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: Processing execute[a2enmod passenger] action run (passenger_apache2::mod_rails line 38)
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: Processing directory[/vagrant/rails] action create (/vagrant/cookbooks/application/providers/default.rb line 75)
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: directory[/vagrant/rails] owner changed to 998
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: directory[/vagrant/rails] group changed to 33
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: directory[/vagrant/rails] mode changed to 755
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: Processing directory[/vagrant/rails/shared] action create (/vagrant/cookbooks/application/providers/default.rb line 82)
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: directory[/vagrant/rails/shared] owner changed to 998
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: directory[/vagrant/rails/shared] group changed to 33
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: directory[/vagrant/rails/shared] mode changed to 755
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: Processing ruby_block[basic-rails before_deploy] action create (/vagrant/cookbooks/application/providers/default.rb line 107)
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: Processing application_ruby_rails[basic-rails] action before_deploy (basic-rails::default line 109)
[Fri, 14 Sep 2012 16:25:13 +0000] INFO: Processing application_ruby_passenger_apache2[basic-rails] action before_deploy (basic-rails::default line 109)
[Fri, 14 Sep 2012 16:25:13 +0000] ERROR: application_ruby_passenger_apache2[basic-rails] (basic-rails::default line 109) has had an error
[Fri, 14 Sep 2012 16:25:13 +0000] ERROR: ruby_block[basic-rails before_deploy] (/vagrant/cookbooks/application/providers/default.rb line 107) has had an error
[Fri, 14 Sep 2012 16:25:13 +0000] ERROR: ruby_block[basic-rails before_deploy] (/vagrant/cookbooks/application/providers/default.rb:107:in `before_deploy') had an error:
ruby_block[basic-rails before_deploy] (/vagrant/cookbooks/application/providers/default.rb line 107) had an error: Chef::Exceptions::ValidationFailed: application_ruby_passenger_apache2[basic-rails] (basic-rails::default line 109) had an error: Chef::Exceptions::ValidationFailed: Option cookbook must be a kind of String!  You passed :"basic-rails".

The contents of my Cheffile - used by Librarian to retrieve the cookbooks:

#!/usr/bin/env ruby
#^syntax detection

site 'http://community.opscode.com/api/v1'

#Provided Cookbooks

#cookbook 'apt', 
#  git: 'https://github.com/fnichol/chef-apt'
cookbook 'apt'
cookbook 'git', 
  git: 'https://github.com/fnichol/chef-git.git'
cookbook 'build-essential'
cookbook 'rvm', 
  git: 'git://github.com/fnichol/chef-rvm.git', ref: 'v0.9.0'
cookbook 'application',
  git: 'https://github.com/opscode-cookbooks/application'
cookbook 'application_ruby',
  git: 'https://github.com/opscode-cookbooks/application_ruby'
#Custom cookbook
cookbook 'basic-rails',
  path: '~/.chef/cookbooks/basic-rails'

The contents of Vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant::Config.run do |config|
  config.vm.box = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"
  config.vm.customize ["modifyvm", :id, "--memory", 1024]
  #config.vm.network :hostonly, "33.33.33.10"

  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = ["cookbooks"]
    chef.add_recipe "apt"
    chef.add_recipe "git"
    chef.add_recipe "build-essential"
    chef.add_recipe "rvm::vagrant"
    chef.add_recipe "rvm::system"
    chef.add_recipe "basic-rails" #Once this included I get the error
  end
end

The basic-rails cookbook is essentially the standard one you get with the create command, with modifications to two files:

metadata.rb

depends "application"
depends "application_ruby"
maintainer       "Noone"
maintainer_email "YOUR_EMAIL"
license          "All rights reserved"
description      "Installs/Configures basic-rails"
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version          "0.1.0"

default.rb

user "www-user" do
  system true
  shell "/bin/false"
end
group "www-data" do
  action :modify
  members "www-user"
  append true
end

application "basic-rails" do
  path "/vagrant/rails"
  owner "www-user"
  group "www-data"

  repository #Insert a git repository here containing a rails app, I'm using a private one
  revision "production"

  rails do
    # Rails-specific configuration
    name "basic-rails"
  end

  passenger_apache2 do
    # Passenger-specific configuration
  end
end
1
This pull request fixes the bug: github.com/opscode-cookbooks/application_ruby/pull/11sborsje

1 Answers

0
votes

Updating to Chef 10.14 resolves the issue.