Erstellen Sie das Basisfeld. Erstens, bring es ohne Bereitstellung und SSH dazu.
vagrant up --no-provision
vagrant ssh
Führen Sie dann die Befehle aus, die Sie zum Aktualisieren der Box benötigen. Dies kann die Aktualisierung von Chef und Ruby beinhalten. Optional, aktualisieren Sie die Pakete für das Betriebssystem, etc. Sie sollten die Box von allem, was nicht erforderlich ist, wie heruntergeladene Paketdateien oder Caches aufräumen.
Zum Beispiel verwende ich den Opscode Omnibus Full Stack Installer for Chef in meinen Vagrant-Boxen (ursprünglich gebaut mit VeeWee), und ich aktualisiere die Pakete auch.
sudo dpkg --purge chef chef-full
sudo true && curl -L https://www.opscode.com/chef/install.sh | sudo bash
sudo apt-get update && sudo aptitude safe-upgrade
sudo rm /var/cache/apt/archives/*.deb
Vergessen Sie nicht, die Festplatte "Null" zu setzen, um die Größe zu reduzieren.
# a bunch of commands like gem install chef, apt-get upgrade, whatever
sudo dd if=/dev/zero of=/EMPTY bs=1M
sudo rm /EMPTY
exit
Dann verpacken Sie die Box und fügen Sie sie Ihrer Vagrant-Umgebung zur Verwendung hinzu.
vagrant package
vagrant box add mynewlucid32 package.box
Wenn Sie das gleiche Feld Namen verwenden möchten, müssen Sie die vorhandene Box (~/.vagrant.d/Boxen/BoxName) zuerst entfernen.
Dies sollte abgestimmt und möglicherweise als die richtige Antwort markiert werden eher die ältere aktuell markierte richtige Antwort. – jimeh
Ja. Dies ist die richtige Antwort für den Thread, da es nicht darauf ankommt, dass die Box eine Ubuntu-Maschine ist. Für ein vollständiges funktionierendes Beispiel [überprüfe mein Repo] (https://github.com/elgalu/jenkins-box-for-travis/blob/74c56b7/Vagrantfile#L25) –
Funktioniert das, wenn Sie ': spätestes' durch a ersetzen spezifische Version? –