I'm having a problem with the chef-solo provisioner failing with the error
Chef::Exceptions::CookbookNotFound: Cookbook apt not found.
Any ideas on what could be going wrong here and how should I try to troubleshoot this?
Host: Windows 7 64bit, Guest: Ubuntu 12.04
Virtualbox 4.3.20
ChefDK 0.4.0
Vagrant 1.7.2
Vagrant plugins:
vagrant-berkshelf (4.0.2)
vagrant-omnibus (1.4.1)
vagrant-share (1.1.3, system)
Vagrant output:
PS C:\VagrantBoxes\mybox> vagrant reload --provision
default: The Berkshelf shelf is at "C:/Users/dmit77/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150208-6588-1a3oox5-default"
==> default: Sharing cookbooks with VM
==> default: Attempting graceful shutdown of VM...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 4.2.12
default: VirtualBox Version: 4.3
==> default: Mounting shared folders...
default: /vagrant => C:/VagrantBoxes/mybox
default: /tmp/vagrant-chef/7159cf65a6eea91634c03008165d96a8/cookbooks => C:/Users/dkrantsber/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150208-6588-1a3oox5-default
==> default: Running provisioner: chef_solo...
==> default: Detected Chef (latest) is already installed
Generating chef JSON and uploading...
==> default: Running chef-solo...
==> default: stdin: is not a tty
==> default: [2015-02-08T05:09:07+00:00] INFO: *** Chef 11.4.0 ***
==> default: [2015-02-08T05:09:08+00:00] INFO: Setting the run_list to ["recipe[apt]", "recipe[apache2]"] from JSON
==> default: [2015-02-08T05:09:08+00:00] INFO: Run List is [recipe[apt], recipe[apache2]]
==> default: [2015-02-08T05:09:08+00:00] INFO: Run List expands to [apt, apache2]
==> default: [2015-02-08T05:09:08+00:00] INFO: Starting Chef Run for vagrant.vm
==> default: [2015-02-08T05:09:08+00:00] INFO: Running start handlers
==> default: [2015-02-08T05:09:08+00:00] INFO: Start handlers complete.
==> default: [2015-02-08T05:09:08+00:00] ERROR: Running exception handlers
==> default: [2015-02-08T05:09:08+00:00] ERROR: Exception handlers complete
==> default: [2015-02-08T05:09:08+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> default: [2015-02-08T05:09:08+00:00] FATAL: Chef::Exceptions::CookbookNotFound: Cookbook apt not found. If you're loading apache2 from another cookbook, make sure you confi
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.
Vagrant file:
Vagrant.configure("2") do |config|
config.vm.box = "opscode-ubuntu-12.04_chef-11.4.0"
config.vm.box_url = "https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_chef-11.4.0.box"
config.ssh.forward_agent = true
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = ["cookbooks"]
chef.add_recipe :'apt'
chef.add_recipe 'apache2'
chef.json = {
:apache => {
:default_site_enabled => "true",
:dir => "/etc/apache2",
:log_dir => "/var/log/apache2",
:error_log => "error.log"
}
}
end
end
Folder structure:
[my_box]
[cookbooks]
[apt]
[apache2]
Vagrantfile
I finally came across the solution. It turns out that vagrant-berkshelf plugin is the problem. Uninstalling it resolves the issue.
Vagrant & Chef - Cookbook *** not found
Related
I was trying to install piwik-dev-environment. According to instructions I cloned the repo, installed Vagrant and executed vagrant up. The process ended with the following error:
Error: Could not parse application options: invalid option: --manifestdir
Full logs are here:
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'trusty64' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Box file was not detected as metadata. Adding it directly...
==> default: Adding box 'trusty64' (v0) for provider: virtualbox
default: Downloading: https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
default: Progress: 100% (Rate: 1170k/s, Estimated time remaining: --:--:--)
==> default: Successfully added box 'trusty64' (v0) for 'virtualbox'!
==> default: Importing base box 'trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: piwik-dev-environment_default_1438688840836_21904
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => D:/Git/piwik-dev-environment
default: /etc/puppet/files => D:/Git/piwik-dev-environment/puppet/files
default: /home/vagrant/www => D:/Git/piwik-dev-environment/www
default: /tmp/vagrant-puppet/modules-48bf73244a40076992a5cef90c07f471 => D:/Git/piwik-dev-environment/puppet/modules
default: /tmp/vagrant-puppet/manifests-768747907b90c39ab6f16fcb3320897a => D:/Git/piwik-dev-environment/puppet
==> default: Running provisioner: shell...
default: Running: inline script
==> default: stdin: is not a tty
==> default: Reading package lists...
==> default: Building dependency tree...
==> default: Reading state information...
==> default: ruby is already the newest version.
==> default: 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
==> default: Successfully installed facter-2.4.4
==> default: Successfully installed json_pure-1.8.2
==> default: Successfully installed hiera-3.0.1
==> default: Successfully installed puppet-4.2.1
==> default: 4 gems installed
==> default: Installing ri documentation for facter-2.4.4...
==> default: Installing ri documentation for json_pure-1.8.2...
==> default: Installing ri documentation for hiera-3.0.1...
==> default: Installing ri documentation for puppet-4.2.1...
==> default: Installing RDoc documentation for facter-2.4.4...
==> default: Installing RDoc documentation for json_pure-1.8.2...
==> default: Installing RDoc documentation for hiera-3.0.1...
==> default: Installing RDoc documentation for puppet-4.2.1...
==> default: Successfully installed hiera-3.0.1
==> default: 1 gem installed
==> default: Installing ri documentation for hiera-3.0.1...
==> default: Installing RDoc documentation for hiera-3.0.1...
==> default: Successfully installed hiera-1.3.4
==> default: Successfully installed hiera-puppet-1.0.0
==> default: 2 gems installed
==> default: Installing ri documentation for hiera-1.3.4...
==> default: Installing ri documentation for hiera-puppet-1.0.0...
==> default: Installing RDoc documentation for hiera-1.3.4...
==> default: Installing RDoc documentation for hiera-puppet-1.0.0...
==> default: Running provisioner: puppet...
==> default: Running Puppet with site.pp...
==> default: stdin: is not a tty
==> default: Error: Could not parse application options: invalid option: --manifestdir
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.
I tried to find a file that contains the --manifestdir option but I didn't find any. I also tried to apply the same patch as in https://github.com/joebew42/diaspora-replica/issues/10 but it didn't help.
I'd appreciate any help.
I think that this was caused by a gem behavior.
I changed the SHELL provisioner to fetch and install the deb repo and installed the Puppet package for Ubuntu and I got past this issue.
config.vm.provision "shell", inline: <<-SHELL
if [ ! -f /deb-get ]; then wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb && sudo touch /deb-get; fi
if [ ! -f /deb-run ]; then sudo dpkg -i puppetlabs-release-trusty.deb && sudo touch /deb-run; fi
if [ ! -f /apt-get-run ]; then sudo apt-get update && sudo touch /apt-get-run; fi
if [ ! -f /apt-get-puppet ]; then sudo apt-get install --yes --force-yes puppet && sudo touch /apt-get-puppet; fi
SHELL
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "puppet"
puppet.manifest_file = "site.pp"
puppet.module_path = "puppet/modules"
puppet.hiera_config_path = "hiera.yaml"
puppet.options = "--verbose --debug"
puppet.working_directory = "/tmp/vagrant-puppet"
puppet.facter = [
['fdqn', config.vm.hostname],
['db_username', CONF['db_username']],
['db_password', CONF['db_password']],
['ssh_username', CONF['ssh_username']],
]
end
This left the following issues:
==> default: Warning: Could not retrieve fact fqdn
==> default: Error: Could not find class apt for piwik-trusty64 on node piwik-trusty64
==> default: Error: Could not find class apt for piwik-trusty64 on node piwik-trusty64
But those are issues that can be fairly easily fixed.
It seems that you're trying to run the puppet provisioner with puppet4 installed on the guest machine. The --manifestsdir option is now deprecated and will cause an error. You have to add several parameters to your Vagrantfile to tell Vagrant that you're using the 4th version of Puppet.
The solution to your problem is described here: https://github.com/mitchellh/vagrant/pull/5601
Unfortunately the Piwik dev-environment project isn't maintained and doesn't work (a lot of issues are open in the tracker).
I have opened a pull request to embedded the Vagrant configuration straigth into Piwik's repository (which hopefully would be simpler to use too). Please comment in the pull request if you find it useful: https://github.com/piwik/piwik/pull/8542
I'm hoping someone could please help because I don't know how to solve this!
I'm using Vagrant and VirtualBox to run a Chef recipe. Essentially the recipe will create a user on a windows 2012 machine.
My problem is however when I type vagrant reload --provision (or any other vagrant command apart from halt),
the host machine does the following:-
D:\cookbook-core>vagrant reload --provision
==> default: Loading Berkshelf datafile...
==> default: Sharing cookbooks with VM
==> default: Attempting graceful shutdown of VM...
==> default: Forcing shutdown of VM...
==> default: Clearing any previously set forwarded ports...
==> default: Updating Vagrant's Berkshelf...
==> default: Resolving cookbook dependencies...
==> default: Fetching 'core' from source at .
==> default: Using apt (2.6.1)
==> default: Using chef-client (4.2.4)
==> default: Using chef_handler (1.1.6)
==> default: Using chocolatey (0.2.1)
==> default: Using core (0.0.1) from source at .
==> default: Using cron (1.6.1)
==> default: Using hipchat (0.4.0)
==> default: Using hostsfile (2.4.5)
==> default: Using logrotate (1.8.0)
==> default: Using minitest-handler (1.3.2)
==> default: Using ms_dotnet2 (1.0.0)
==> default: Using ms_dotnet4 (1.0.2)
==> default: Using ms_dotnet45 (2.0.0)
==> default: Using ohai (2.0.2) from git#github.com:JustGiving/cookbook-ohai.git (at master)
==> default: Using powershell (3.0.7)
==> default: Using sudo (2.7.1)
==> default: Using sysctl (0.6.2)
==> default: Using users (1.7.0)
==> default: Using windows (1.36.6)
==> default: Vendoring apt (2.6.1) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/apt
==> default: Vendoring chef-client (4.2.4) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/chef-client
==> default: Vendoring chef_handler (1.1.6) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/chef_handler
==> default: Vendoring chocolatey (0.2.1) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/chocolatey
==> default: Vendoring core (0.0.1) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/core
==> default: Vendoring cron (1.6.1) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/cron
==> default: Vendoring hipchat (0.4.0) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/hipchat
==> default: Vendoring hostsfile (2.4.5) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/hostsfile
==> default: Vendoring logging (0.0.1) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/logging
==> default: Vendoring logrotate (1.8.0) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/logrotate
==> default: Vendoring minitest-handler (1.3.2) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/minitest-handler
==> default: Vendoring ms_dotnet2 (1.0.0) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/ms_dotnet2
==> default: Vendoring ms_dotnet4 (1.0.2) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/ms_dotnet4
==> default: Vendoring ms_dotnet45 (2.0.0) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/ms_dotnet45
==> default: Vendoring ohai (2.0.2) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/ohai
==> default: Vendoring powershell (3.0.7) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/powershell
==> default: Vendoring sudo (2.7.1) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/sudo
==> default: Vendoring sysctl (0.6.2) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/sysctl
==> default: Vendoring users (1.7.0) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/users
==> default: Vendoring windows (1.36.6) to c:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default/windows
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
default: Warning: Connection timeout. Retrying...
default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
GuestAdditions versions on your host (4.3.12) and guest (4.3.8) do not match.
The guest's platform is currently not supported, will try generic Linux method...
Downloading VirtualBox Guest Additions ISO from http://download.virtualbox.org/virtualbox/4.3.12/VBoxGuestAdditions_4.3.12.iso
Progress: 100% (Rate: 20.5M/s, Estimated time remaining: --:--:--)
Copy iso file C:/Users/aebirim/.vagrant.d/tmp/VBoxGuestAdditions_4.3.12.iso into the box /tmp/VBoxGuestAdditions.iso
/bin/sh: sudo: command not found
Installing Virtualbox Guest Additions unknown - guest version is 4.3.8
/bin/sh: sudo: command not found
/bin/sh: sudo: command not found
Cleaning up downloaded VirtualBox Guest Additions ISO...
bash.exe: warning: could not find /tmp, please create!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
default: /tmp/vagrant-chef/7ceb72d4e097eb60d8a5bb90970df99d/cookbooks => C:/Users/aebirim/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150312-3420-1mj6gii-default
This is my vagrantfile:-
Vagrant.configure(2) do |config|
config.vm.box = "win2012"
config.vm.box_url = "http://box.dev.ju.service/win2012.box"
config.winrm.username = "vagrant"
config.winrm.password = "vagrant"
config.vm.guest = :windows
config.windows.halt_timeout = 15
config.ssh.insert_key = false
config.vm.provider :virtualbox do |vb|
vb.gui = true
end
config.vm.provision :chef_zero do |chef|
chef.log_level = :info
chef.data_bags_path = 'data_bags'
#chef.provisioning_path = '/tmp/vagrant-chef-2'
#chef.environment = 'dev'
chef.encrypted_data_bag_secret_key_path = "D:/tmp/vagrant-chef-2/encrypted_data_bag_secret"
chef.run_list = [
"recipe[users]",
"recipe[core::default]"
]
end
end
The VM gets launched but as you can see from the output, Vagrant hangs permanently on mounting a shared folder (even when I disabled mounting according to the docs) and doesn't go past this part therefore chef-solo is not provisioned and my chef recipe isn't run. I'm running Vagrant 1.7.2 with VirtualBox 4.3.12. The VM I'm trying to create is a Windows 2012 box.
I am trying to make incrementatal changes to the cookbook for a vagrant server. "vagrant destroy" followed by a "vagrant up" works perfectly but "vagrant up --provision" errors out as below. The files all appear to exist.
It seems weird that when provisioning for the first time they would work perfectly and then fail on the reprovisioning. Any idea what I might be doing wrong?
==> default: Running provisioner: shell...
default: Running: inline script
==> default: /usr/bin/chef-solo
==> default: Running provisioner: shell...
default: Running: inline script
==> default: Running provisioner: chef_solo...
==> default: Detected Chef (latest) is already installed
Generating chef JSON and uploading...
==> default: Running chef-solo...
==> default: [2015-04-01T05:42:20+00:00] INFO: Forking chef instance to converge...
==> default: [2015-04-01T05:42:20+00:00] INFO: *** Chef 12.2.1 ***
==> default: [2015-04-01T05:42:20+00:00] INFO: Chef-client pid: 3710
==> default: [2015-04-01T05:42:21+00:00] INFO: Setting the run_list to ["role[A]", "role[B]"] from CLI options
==> default: [2015-04-01T05:42:21+00:00] ERROR: Role A (included by 'top level') is in the runlist but does not exist. Skipping expand.
==> default: [2015-04-01T05:42:21+00:00] ERROR: Role B (included by 'top level') is in the runlist but does not exist. Skipping expand.
==> default:
==> default:
==> default: ================================================================================
==> default: Error expanding the run_list:
==> default: ================================================================================
==> default:
==> default: Missing Role(s) in Run List:
==> default: ----------------------------
==> default: * A included by 'top level'
==> default: * B included by 'top level'
==> default:
==> default: Original Run List
==> default: -----------------
==> default: * role[A]
==> default: * role[B]
==> default:
==> default:
==> default: [2015-04-01T05:42:21+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> default: [2015-04-01T05:42:21+00:00] ERROR: The expanded run list includes nonexistent roles: A, B
==> default: [2015-04-01T05:42:22+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
So I thought I had this all working, but it seems I'm still missing something.
When I vagrant destroy --force && vagrant up, everything works just fine. It creates the box and chef provisioning works as intended.
However, if I do a vagrant halt and then a vagrant up, I get the following error:
==> default: [2015-01-26T14:04:21+00:00] ERROR: Cookbook install not found. If you're loading install from another cookbook, make sure you configure the dependency in your metadata
==> default: [2015-01-26T14:04:21+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
install is a custom recipe, which just basically installs a bunch of packages, nothing too fancy.
Here is the default.rb, which is located in site_cookbooks/install/recipies/
# Install repos for PHP 5.5
remote_file "Creating PHP5.5 Repo" do
path "#{Chef::Config[:file_cache_path]}/webtatic_repo_latest.rpm"
source "http://mirror.webtatic.com/yum/el6/latest.rpm"
action :create
end
rpm_package "Installing PHP5.5 Repo" do
package_name "jmxtrans"
source "#{Chef::Config[:file_cache_path]}/webtatic_repo_latest.rpm"
action :install
end
# Install PHP 5.5 packages
yum_package "Installing PHP5.5" do
package_name "php55w"
version "5.5.20-1.w6"
allow_downgrade true
end
# Install PHP 5.5 Cli
yum_package "Installing PHP5.5-cli" do
package_name "php55w-cli"
version "5.5.20-1.w6"
allow_downgrade true
end
# Install PHP 5.5 common
yum_package "Installing PHP5.5-common" do
package_name "php55w-common"
version "5.5.20-1.w6"
allow_downgrade true
end
# Install PHP 5.5 mysql
yum_package "Installing PHP5.5-mysql" do
package_name "php55w-mysql"
version "5.5.20-1.w6"
allow_downgrade true
end
# Install the mysql server
mysql_service "default" do
instance "property.ca"
version "5.5"
initial_root_password node["install"]["mysql"]["password"]
port "3306"
bind_address "0.0.0.0"
action [:create, :start]
end
# Install the mysql client
mysql_client "default" do
version "5.5"
action :create
end
# Install Apache 2.4 repo
remote_file "Installing Apache 2.4 repo" do
path "/etc/yum.repos.d/epel-httpd24.repo"
source "http://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo"
action :create
end
# Install Apache 2.4 package
yum_package "Installing Apache 2.4" do
package_name "httpd24-apr"
version "1.4.8-2.el6"
allow_downgrade true
end
# Install Git package
yum_package "Installing Git" do
package_name "git"
version "1.7.1-3.el6_4.1"
allow_downgrade true
end
# Download composer
remote_file "Downloading composer" do
path "#{Chef::Config[:file_cache_path]}/composer_installer"
source "https://getcomposer.org/installer"
action :create
end
# Install composer
bash "Install composer" do
user "root"
cwd "/usr/bin"
code <<-EOH
php #{Chef::Config[:file_cache_path]}/composer_installer -- ----install-/usr/local/bin --filename=composer
EOH
end
I have a metadata.rb which is located in site_cookbooks/install and looks like this:
name 'install'
maintainer 'SynackSA'
maintainer_email 'synacksa#email.ca'
license 'MIT'
description 'Install the dev environment'
version '1.0.0'
depends 'mysql'
My Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "chef/centos-6.5"
# Plugins
config.berkshelf.enabled = true
config.omnibus.chef_version = :latest
config.vm.hostname = "site.ca"
config.vm.network "public_network"
config.vm.synced_folder "/Users/PropertyDev/Projects/property.ca", "/var/www/site.ca"
config.vm.synced_folder "/Users/MyUser/Projects/scripts", "/var/www/scripts"
# run: "always"
config.vm.provision "chef_solo" do |chef|
chef.json = {
"install" => {
"mysql" => {
"password" => "password"
}
}
}
chef.cookbooks_path = "site_cookbooks"
chef.add_recipe "install"
# chef.log_level = :debug
end
end
My Berksfile:
# encoding: utf-8
source 'https://supermarket.chef.io'
cookbook "mysql", "~> 6.0.10"
cookbook "install", path: "site_cookbooks/install"
Full debug output from vagrant reload --provision with debug_level = :debug
ยป vagrant reload --provision
==> default: Loading Berkshelf datafile...
==> default: Sharing cookbooks with VM
==> default: Attempting graceful shutdown of VM...
==> default: Checking if box 'chef/centos-6.5' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Updating Vagrant's Berkshelf...
==> default: Resolving cookbook dependencies...
==> default: Fetching 'install' from source at site_cookbooks/install
==> default: Using install (1.0.0) from source at site_cookbooks/install
==> default: Using rbac (1.0.2)
==> default: Using smf (2.2.1)
==> default: Using yum-mysql-community (0.1.12)
==> default: Using resource-control (0.1.1)
==> default: Using yum (3.5.2)
==> default: Using mysql (6.0.10)
==> default: Vendoring install (1.0.0) to /Users/User/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150127-46811-19w58cq-default/install
==> default: Vendoring mysql (6.0.10) to /Users/User/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150127-46811-19w58cq-default/mysql
==> default: Vendoring rbac (1.0.2) to /Users/User/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150127-46811-19w58cq-default/rbac
==> default: Vendoring resource-control (0.1.1) to /Users/User/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150127-46811-19w58cq-default/resource-control
==> default: Vendoring smf (2.2.1) to /Users/User/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150127-46811-19w58cq-default/smf
==> default: Vendoring yum (3.5.2) to /Users/User/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150127-46811-19w58cq-default/yum
==> default: Vendoring yum-mysql-community (0.1.12) to /Users/User/.berkshelf/vagrant-berkshelf/shelves/berkshelf20150127-46811-19w58cq-default/yum-mysql-community
==> default: Clearing any previously set network interfaces...
==> default: Available bridged network interfaces:
1) en4: Display Ethernet
2) en0: Wi-Fi (AirPort)
3) en1: Thunderbolt 1
4) en2: Thunderbolt 2
5) p2p0
6) awdl0
7) bridge0
==> default: When choosing an interface, it is usually the one that is
==> default: being used to connect to the internet.
default: Which interface should the network bridge to? 1
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: bridged
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Checking for host entries
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => /Users/User/Projects/vagrant_test
default: /var/www/scripts => /Users/User/Projects/scripts
default: /var/www/site.ca => /Users/User/Projects/site.ca
==> default: Chef 12.0.3 Omnibus package is already installed.
==> default: Running provisioner: chef_solo...
==> default: Detected Chef (latest) is already installed
Generating chef JSON and uploading...
==> default: Running chef-solo...
==> default: [2015-01-27T21:00:31+00:00] INFO: Forking chef instance to converge...
==> default: [2015-01-27T21:00:31+00:00] DEBUG: Fork successful. Waiting for new chef pid: 2977
==> default: [2015-01-27T21:00:31+00:00] DEBUG: Forked instance now converging
==> default: [2015-01-27T21:00:31+00:00] INFO: *** Chef 12.0.3 ***
==> default: [2015-01-27T21:00:31+00:00] INFO: Chef-client pid: 2977
==> default: [2015-01-27T21:00:31+00:00] DEBUG: Chef-client request_id: 03997806-45c2-4d61-a9ab-029c3960788e
==> default: [2015-01-27T21:00:34+00:00] DEBUG: Building node object for property.ca
==> default: [2015-01-27T21:00:34+00:00] DEBUG: Extracting run list from JSON attributes provided on command line
==> default: [2015-01-27T21:00:34+00:00] INFO: Setting the run_list to ["recipe[install]"] from CLI options
==> default: [2015-01-27T21:00:34+00:00] DEBUG: Applying attributes from json file
==> default: [2015-01-27T21:00:34+00:00] DEBUG: Platform is centos version 6.5
==> default: [2015-01-27T21:00:34+00:00] INFO: Run List is [recipe[install]]
==> default: [2015-01-27T21:00:34+00:00] INFO: Run List expands to [install]
==> default: [2015-01-27T21:00:34+00:00] INFO: Starting Chef Run for property.ca
==> default: [2015-01-27T21:00:34+00:00] INFO: Running start handlers
==> default: [2015-01-27T21:00:34+00:00] INFO: Start handlers complete.
==> default: [2015-01-27T21:00:34+00:00] DEBUG: Re-raising exception: Chef::Exceptions::CookbookNotFound - Cookbook install not found. If you're loading install from another cookbook, make sure you configure the dependency in your metadata
==> default: /opt/chef/embedded/apps/chef/lib/chef/cookbook/cookbook_collection.rb:38:in `block in initialize'
==> default: /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/ohai-8.0.1/lib/ohai/mash.rb:77:in `yield'
==> default: /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/ohai-8.0.1/lib/ohai/mash.rb:77:in `default'
==> default: /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/ohai-8.0.1/lib/ohai/mash.rb:77:in `default'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:277:in `[]'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:277:in `each_cookbook_dep'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:255:in `add_cookbook_with_deps'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:88:in `block in cookbook_order'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:86:in `each'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:86:in `cookbook_order'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:98:in `compile_libraries'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:71:in `compile'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context.rb:92:in `load'
==> default: /opt/chef/embedded/apps/chef/lib/chef/policy_builder/expand_node_object.rb:73:in `setup_run_context'
==> default: /opt/chef/embedded/apps/chef/lib/chef/client.rb:235:in `setup_run_context'
==> default: /opt/chef/embedded/apps/chef/lib/chef/client.rb:397:in `run'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:261:in `block in fork_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in `fork'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in `fork_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:215:in `block in run_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/local_mode.rb:38:in `with_server_connectivity'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:201:in `run_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:245:in `block in interval_run_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in `loop'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in `interval_run_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:224:in `run_application'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:58:in `run'
==> default: /opt/chef/embedded/apps/chef/bin/chef-solo:25:in `<top (required)>'
==> default: /usr/bin/chef-solo:40:in `load'
==> default: /usr/bin/chef-solo:40:in `<main>'
==> default: [2015-01-27T21:00:34+00:00] ERROR: Running exception handlers
==> default: [2015-01-27T21:00:34+00:00] ERROR: Exception handlers complete
==> default: [2015-01-27T21:00:34+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> default: [2015-01-27T21:00:34+00:00] DEBUG: Chef::Exceptions::CookbookNotFound: Cookbook install not found. If you're loading install from another cookbook, make sure you configure the dependency in your metadata
==> default: /opt/chef/embedded/apps/chef/lib/chef/cookbook/cookbook_collection.rb:38:in `block in initialize'
==> default: /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/ohai-8.0.1/lib/ohai/mash.rb:77:in `yield'
==> default: /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/ohai-8.0.1/lib/ohai/mash.rb:77:in `default'
==> default: /opt/chef/embedded/lib/ruby/gems/2.1.0/gems/ohai-8.0.1/lib/ohai/mash.rb:77:in `default'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:277:in `[]'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:277:in `each_cookbook_dep'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:255:in `add_cookbook_with_deps'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:88:in `block in cookbook_order'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:86:in `each'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:86:in `cookbook_order'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:98:in `compile_libraries'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context/cookbook_compiler.rb:71:in `compile'
==> default: /opt/chef/embedded/apps/chef/lib/chef/run_context.rb:92:in `load'
==> default: /opt/chef/embedded/apps/chef/lib/chef/policy_builder/expand_node_object.rb:73:in `setup_run_context'
==> default: /opt/chef/embedded/apps/chef/lib/chef/client.rb:235:in `setup_run_context'
==> default: /opt/chef/embedded/apps/chef/lib/chef/client.rb:397:in `run'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:261:in `block in fork_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in `fork'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in `fork_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:215:in `block in run_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/local_mode.rb:38:in `with_server_connectivity'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:201:in `run_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:245:in `block in interval_run_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in `loop'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in `interval_run_chef_client'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:224:in `run_application'
==> default: /opt/chef/embedded/apps/chef/lib/chef/application.rb:58:in `run'
==> default: /opt/chef/embedded/apps/chef/bin/chef-solo:25:in `<top (required)>'
==> default: /usr/bin/chef-solo:40:in `load'
==> default: /usr/bin/chef-solo:40:in `<main>'
==> default: [2015-01-27T21:00:34+00:00] ERROR: Cookbook install not found. If you're loading install from another cookbook, make sure you configure the dependency in your metadata
==> default: [2015-01-27T21:00:34+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.
Any help greatly appreciated.
EDIT - ANSWER
After some more investigation, with the help of #coderanger, it seems with versions 1.7.X there is a problem where sometimes the chef share directory isn't created on subsequent vagrant up --provision commands. I downgraded to 1.6.5, which seems to have fixed the problem. You can see the problem in the changelog (https://github.com/mitchellh/vagrant/blob/master/CHANGELOG.md)
Your copy of either Vagrant or the Berkshelf plugin are likely out of date. I don't see the berks-created temp folder being setup as a shared folder. Check your version of vagrant-berkshelf.
Ive been struggling with this for hours and dont seem to be making any progress. Any tips on where I should start debugging this would be appreciated.
I am attempting to provision a vagrant machine and get the following error.
`==> default: Running provisioner: chef_solo...
Generating chef JSON and uploading...
==> default: Running chef-solo...
==> default: stdin: is not a tty
==> default: [2014-05-14T11:16:08+00:00] INFO: *** Chef 10.14.2 ***
==> default: [2014-05-14T11:16:08+00:00] INFO: Setting the run_list to ["recipe[nginx]"] from JSON
==> default: [2014-05-14T11:16:08+00:00] INFO: Run List is [recipe[nginx]]
==> default: [2014-05-14T11:16:08+00:00] INFO: Run List expands to [nginx]
==> default: [2014-05-14T11:16:08+00:00] INFO: Starting Chef Run for precise64
==> default: [2014-05-14T11:16:08+00:00] INFO: Running start handlers
==> default: [2014-05-14T11:16:08+00:00] INFO: Start handlers complete.
==> default:
==> default: ================================================================================
==> default: Recipe Compile Error in /tmp/vagrant-chef-3/chef-solo-1/cookbooks/build-essential/libraries/xcode_command_line_tools.rb
==> default: ================================================================================
==> default:
==> default: NameError
==> default: ---------
==> default: uninitialized constant Chef::Resource::LWRPBase
==> default:
==> default: Cookbook Trace:
==> default: ---------------
==> default: /tmp/vagrant-chef-3/chef-solo-1/cookbooks/build-essential/libraries/xcode_command_line_tools.rb:21
==> default:
==> default: Relevant File Content:
==> default: ----------------------
==> default: /tmp/vagrant-chef-3/chef-solo-1/cookbooks/build-essential/libraries/xcode_command_line_tools.rb:
==> default:
==> default: 1: #
==> default: 2: # Cookbook Name:: build-essential
==> default: 3: # Library:: xcode_command_line_tools
==> default: 4: #
==> default: 5: # Copyright 2014, Chef Software, Inc.
==> default: 6: #
==> default: 7: # Licensed under the Apache License, Version 2.0 (the "License");
==> default: 8: # you may not use this file except in compliance with the License.
==> default: 9: # You may obtain a copy of the License at
==> default: [2014-05-14T11:16:09+00:00] ERROR: Running exception handlers
==> default: [2014-05-14T11:16:09+00:00] ERROR: Exception handlers complete
==> default: [2014-05-14T11:16:09+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> default: [2014-05-14T11:16:09+00:00] FATAL: NameError: uninitialized constant Chef::Resource::LWRPBase
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.`
I am using the berkshelf-vagrant plugin with vagrant
Vagrant 1.6.2
My vagrant file has the following:
config.vm.provision :chef_solo do |chef|
chef.run_list = [
"recipe[nginx]"
]
end
You are using a very old version of Chef. You might want to use vagrant-omnibus to install a more modern Chef version in your box.
Your issue looks very similar to COOK-4441. Reason: Chef 10, while 11 is required.