Installation / Provisionierung fertiger Vagrant-Boxen mit Puppet funktioniert nicht

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

4 Antworten

  1. Alex sagt:

    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.

  2. Christian Münch sagt:

    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