Vagrant / VirtualBox-VM-Bereitstellung: rbenv wird erfolgreich installiert, nachfolgende Skriptverwendungen schlagen jedoch fehl.

Ich verwende Vagrant + VirtualBox, um eine virtuelle Maschine für meine Rails-App einzurichten. Ich arbeite daran, ein @ aufzuräum.sh Provisioning-Skript, auf das in @ verwiesen wiVagrantfile wie so:

config.vm.provision "shell", path: "script/provision-script.sh" 

Das Bereitstellungsskript führt eine Reihe von Aufgaben aus, soll jedoch gegen Ende die Ruby-Versionierung von rbenv installieren und dann mit rbenv Ruby 2.2.1 installieren. Dieser Teil des Bereitstellungsskripts sieht folgendermaßen aus:

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

lles bis zumrbenv install... Teil funktioniert richtig. Die Installation von ruby schlägt mit folgendem Fehler fehl:

==> 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

Das Skript wird dann beendet. Ich kann das vm mit @ öffnvagrant ssh und dann erfolgreich ausführenrbenv install 2.2.1, ich vermute also, dass während der Bereitstellung eine neue Vagrant-Shell nicht gestartet wird. Ich hatte den Eindruck, dass dies mit @ passieren sollsu vagrant kurz bevorrbenv install 2.2.1.

Was kann ich tun, um sicherzustellen, dass während dieser Bereitstellung eine neue Shell initialisiert wird und dasrbenv Befehl wird funktionieren?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage