I have setup a vagrant box using precise64 (ubuntu 14.04) and installed packages needed for octopress. I can ssh into the vagrant box and generate posts and run preview for my octopress site.

Now I want to create a provision script to automatically run following commands once machine is up.

gem install bundler
rbenv rehash
bundle install
rake install
rake generate
rake preview

so I created a shell script using above commands. But when I try to run vagrant up or vagrant provision it's giving me following error.

==> default: ERROR:  While executing gem ... (Gem::FilePermissionError)
==> default:     You don't have write permissions into the /opt/vagrant_ruby/lib/ruby/gems/1.8 directory.
==> default: bash: rbenv: command not found

My Vagrantfile's provision configuration is like this. I tried privileged option making true too.

config.vm.provision :shell, :privileged => false, :upload_path => "/home/vagrant/octopress/start.sh", :path => "start.sh"

What am I doing wrong here?

As you can see in above logs, provision script is trying to use gem from /opt/vagrant_ruby/lib/ruby/gems directory. But when I ssh into vagrant box and check the location of gem and rbenv, those packages are located inside users home directory (/home/vagrant). The problem seems to provision script is not using 'vagrant' user's environment variables. But when I check whoami inside the script, I am getting vagrant as output.

Is there any way to run provision script with vagrant user's variable?

1 Answer 1


This vagrant plugin it fixed the problem for me:


you can run your provision script after vagrant up your VM:

config.trigger.after :command, :option => "value" do
    run "script"

and don't forget to add sudo to your commands.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .