Aprovisionamiento de VM Vagrant / VirtualBox: rbenv se instala con éxito pero los usos posteriores en el script fallan
Estoy usando Vagrant + VirtualBox para configurar una máquina virtual para mi aplicación Rails. Estoy trabajando en limpiar un.sh
script de aprovisionamiento al que se hace referencia enVagrantfile
al igual que:
config.vm.provision "shell", path: "script/provision-script.sh"
El script de provisión hace una serie de cosas, pero hacia el final se supone que instala el versionado de rbenv Ruby y luego usa rbenv para instalar Ruby 2.2.1. Esa parte del script de provisión se ve así:
echo "setting up rbenv"
# execute the remaining commands as vagrant user, instead of root
sudo -H -u vagrant bash -c "git clone https://github.com/sstephenson/rbenv.git ~vagrant/.rbenv"
sudo -H -u vagrant bash -c "git clone https://github.com/sstephenson/ruby-build.git ~vagrant/.rbenv/plugins/ruby-build"
sudo -H -u vagrant bash -c "git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~vagrant/.rbenv/plugins/rbenv-gem-rehash"
echo "setting up rbenv environment in bash"
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~vagrant/.bashrc
echo 'eval "$(rbenv init -)"' >> ~vagrant/.bashrc
# start new vagrant shell so rbenv will work
echo "building ruby"
su vagrant
rbenv install 2.2.1 && rbenv global 2.2.1 && rbenv rehash && cd /path/to/my/app && gem install bundler rake && rbenv rehash && bundle && rbenv rehash
Todo hasta elrbenv install...
Parte funciona correctamente. La instalación de ruby falla con el siguiente error:
==> default: setting up rbenv
==> default: Cloning into '/home/vagrant/.rbenv'...
==> default: Cloning into '/home/vagrant/.rbenv/plugins/ruby-build'...
==> default: Cloning into '/home/vagrant/.rbenv/plugins/rbenv-gem-rehash'...
==> default: setting up rbenv environment in bash
==> default: building ruby
==> default: /tmp/vagrant-shell: line 73: rbenv: command not found
El guión luego termina. Puedo abrir el vm convagrant ssh
y luego ejecutar con éxitorbenv install 2.2.1
, así que supongo que durante el aprovisionamiento no se está iniciando un nuevo shell vagabundo. Tenía la impresión de que esto debería suceder consu vagrant
justo antes derbenv install 2.2.1
.
¿Qué puedo hacer para asegurarme de que se inicia un nuevo shell durante este aprovisionamiento y que elrbenv
comando funcionará?