You would like to quickly copy a file from the local host to the vagrant machine.
Find the private key, ssh and IP port with ssh-config:
$ vagrant ssh-config
Copy the file using the private key as a parameter to scp:
scp -P 2222 -i /path/to/private/key /path/to/file email@example.com:~
Taken from the answer here
You are trying to install rmagick in an Ubuntu 12.04 virtual box, but you get the following error:
Can't install RMagick 2.13.1. Can't find Magick-config
Make sure you install both the imagemagick and the libmagickwand-dev packages with either apt-get :
sudo apt-get install imagemagick libmagickwand-dev
or in a puppet script as:
ensure => installed
ensure => installed
When you want to use the capistrano recipe to deploy to a vagrant virtual box as described in ‘Deploying Rails’, and after you have corrected the rvm_path as described here, you get the following error message:
$rvm_path (/home/ubuntu/.rvm/) does not exist.
Make sure that after adding the rvm_path add also the following to the deploy.rb file, since rvm is installed system wide.
set :rvm_type, :system
Suggestion from here.
When trying to set up the capistrano deploy recipe to deploy to the vagrant virtual box as described in ‘Deploying rails’, you get the error:
.rvm/bin/rvm-shell: No such file or directory
when you have installed rvm system wide on the virtual box.
Make sure that you add the following into your deploy.rb file to set up the path for rvm:
set :rvm_bin_path, "/usr/local/rvm/bin"
Solution taken from here
When you try to apply the puppet configuration into a vagrant box and using systemwide rvm installation (if you follow the instructions here), you have the following error:
vagrant@precise64:~$ sudo puppet apply --verbose puppet/manifests/site.pp
/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find puppet (>= 0) amongst  (Gem::LoadError)
from /usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem'
from /usr/local/rvm/gems/ruby-1.9.3-p327/bin/puppet:18:in `'
from /usr/local/rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `eval'
from /usr/local/rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `'
Use rvmsudo instead of sudo to make sure that the paths are correct:
vagrant@precise64:~$ rvmsudo puppet apply --verbose puppet/manifests/site.pp
In order to install a vagrant box with rvm and puppet following the examples in the ‘Deploying Rails’ book, the updated steps needed are described below.
The two main differences are a) rvm system wide installation as recommended here, and b) the puppet 3.0.1 version support of ruby 1.9.3 here
So below are the steps followed to make it work.
- Remove system ruby
sudo rm -rf /opt/vagrant_ruby/
- Remove vagrant_ruby.sh script as it adds a path that no longer exists:
sudo rm /etc/profile.d/vagrant_ruby.sh
- Install rvm with system wide installation:
curl -L get.rvm.io | sudo bash -s stable
- Add vagrant user and any other additional user to the rvm group:
sudo usermod --append --groups rvm vagrant (or ubuntu)
- Exit and login back in to install ruby 1.9.3-p327 (current)
$ vagrant ssh
vm$ rvm install 1.9.3-p327
- install necessary ruby dependencies suggestest by previous command:
sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion pkg-config
- Creat a gemset to be used with the desired rvm ruby version:
rvm gemset create rails3_2_11
- Use the created gemset to install puppet gem:
rvm gemset use rails3_2_11
- Install puppet as the vagrant user and NOT as sudo:
gem install puppet -v 3.0.1
- install the puppet user and group as per book instructions:
vm$ sudo useradd --comment "Puppet" --no-create-home --system --shell /bin/false puppet
- Optionally create a puppet directory to put manifests and modules and create a .rvmrc file to use specified gemset, by adding the following line to puppet/.rvmrc:
rvm gemset use rails3_2_11
- use rvmsudo instead of sudo to apply the puppet scripts:
rvmsudo puppet apply --verbose puppet/manifests/site.pp
As an addition to the excellent beta book ‘Deploying Rails’, as I had problems using the suggested lucid64 image, I’ve tried to install a debian lenny 32 image with rvm and Ruby 1.9.3.
The steps needed are listed below
- Download the lenny package:
localhost$ vagrant box add debian-lenny-32 https://s3-eu-west-1.amazonaws.com/glassesdirect-boxen/debian/debian_lenny_32.box
- Make a new directory for the virtual box:
localhost$ mkdir -p ~/deployingrails/lenny32
- change into created directory and create the Vagrant file:
localhost$ cd ~/deployingrails/lenny32
- change the Vagrant file to use the virtual box we have downloaded:
Vagrant::Config.run do |config|
config.vm.box = "lenny32"
- Start the VM:
localhost$ vagrant up
- If there is a warning about the Guest additions here install the latest guest additions by following the description here, but only use the update and upgrade steps as:
localhost$ vagrant ssh
vagrant$ sudo apt-get update
vagrant$ sudo apt-get upgrade
- After finishing the upgrade logout (exit) from the VM and issue the command to restart the VM:
localhost$ vagrant reload
- login to the VM again:
localhost$ vagrant ssh
Install curl to be able to download the installation script for:
vagrant$ sudo apt-get install curl
- Download and install rvm by using the script described here http://beginrescueend.com/rvm/install/ :
vagrant$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
- Add the loading of the RVM function into .bashrc, by running the following in the command prompt:
vagrant$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bashrc
- Reload the bashrc file:
vagrant$ source ~/.bashrc
- Make sure that the rvm is loaded as function:
vagrant$ type rvm | head -1
rvm is a function
- Run the rvm requirement to see the needed libraries and then run the suggested ones (except libreadline6 and libreadline6-dev that are not there in debian):
vagrant$ sudo apt-get install build-essential openssl curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison
- Install Ruby 1.9.3 :
vagrant$ rvm install ruby-1.9.3
- Use the ruby 1.9.3 as default:
vagrant$ rvm use 1.9.3 --default
- Finally create a new VM package to use in future:
localhost$ vagrant package --output lenny32-rvm-ruby193
And add it our box list:
localhost$ vagrant box add lenny32-rvm-ruby193 lenny32-rvm-ruby193
localhost$ vagrant box list