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