Als ich meine ersten Gehversuche mit Vagrant hatte (2011? 2012?), habe ich eine Reihe von fertigen Konfigurationen für Puppet (oder auch Chef) probiert. Das seltsame war: von denen haben die meisten nicht funktioniert. Einige liefen durch, andere wurden teilweise installiert, wieder andere gar nicht. Die Fehlermeldungen waren unterschiedlich.
Es hat ein wenig gedauert, bis ich den Grund verstanden hatte: apt-get update, also die Aktualisierung des Paket-Index, fehlt in den meisten Boxen und das hat bei 90% zu Problemen geführt.
Den Index auf den neuesten Stand zu bringen (und somit womöglich zwischen mehreren provisionierten Maschinen unterschiedliche Zustände zu erzeugen) ist sicher nicht immer gewünscht. Dennoch ist das vielleicht ein sinnvoller Tipp für Neulinge, die nur herausfinden möchte, was eine Box so tut und die ein wenig damit herumspielen möchten.
Wie führe ich apt-get update für die Box aus?
Nun, im Prinzip gibt es drei Möglichkeiten.
1. Möglichkeit: Im Idealfall wird apt-get update direkt in die Manifeste (oder bei Chef in die Rezepte) integriert. Dazu findet man über die Suchmaschinen einige Wege. Zum Beispiel kann man den Befehl über eine Stage einbinden oder die Relationship-Syntax verwenden.
2. Möglichkeit (danke an Christian Münch): man nimmt folgende Zeile in sein Vagrantfile auf:
config.vm.provision :shell, :inline => "sudo apt-get update"
3. Möglichkeit: kann oder möchte man die Skripte nicht verändern, dann kann man die VM ohne Provisionierung starten und manuell updaten. Danach fährt man die Maschine erneut mit Vagrant hoch.
# Am Host ausführen vagrant up --no-provision vagrant ssh # Innerhalb der SSH-Verbindung ausführen sudo apt-get update exit # Wieder am Host ausführen vagrant up
Hi Matthias,
möglichkeit 3 ist denke ich ganz und gar nicht empfehlenswert: Man muss das nach jedem vagrant destroy erneut
machen – und damit geht natürlich ein Teil der Idee von Vagrant verloren 😉
Falls man eine Box „einfach mal eben“ ausprobieren will, natürlich trotzdem okay.
Alex
Hi Alex,
genau so war es bei mir: ich habe damals nur eine nach der anderen Box ausprobiert. Als Dauerlösung ist z.B. der Vorschlag von Christian sicher besser, da hast du Recht.
Hallo Matthias,
es geht auch automatisiert.
Einfach in das Vagrantfile die folgende Zeile aufnehmen:
config.vm.provision :shell, :inline => „sudo apt-get update“
Gruß
Christian
Hallo Christian,
vielen Dank für den Hinweis!