Synchronisierte Ordner beim Neustart eines Vagrant-Rechners mit dem Ansible-Provisioner verloren

8

Vagrant erstellt eine Entwicklungsumgebung mit VirtualBox und stellt sie dann mit ansible bereit. Im Rahmen der Bereitstellung führt ansible einen Neustart durch und wartet dann darauf, dass SSH wieder hochfährt. Dies funktioniert wie erwartet, aber weil die Vagrant-Maschine nicht von einem "Vagabund hoch" -Befehl gestartet wird, werden die synchronisierten Ordner nicht ordnungsgemäß geladen, wenn die Box vom Neustart zurückkommt.

Das Ausführen von "vagrant reload" behebt die Maschine und mountet die Freigaben erneut.

Gibt es eine Möglichkeit, dem Vagabunden zu sagen, er solle den Server neu laden oder all die Dinge tun, die der Vagabund nach einem manuellen Neustart gemacht hätte?

Einfach "sudo reboot" ausführen, wenn SSH-ed in die Vagrant-Box kommt, erzeugt das gleiche Problem.

    
Max 27.05.2014, 16:43
quelle

2 Antworten

5

Es gibt keine Möglichkeit für Vagrant zu wissen, dass der Computer während der Bereitstellung neu gestartet wird.

Wenn möglich, wäre es am besten, hier einen Neustart zu vermeiden. Zum Beispiel sollten Kernel-Updates bereits beim Erstellen der Basisbox durchgeführt werden.

Ein weiterer einfacher (aber nicht sehr praktischer) Weg ist die Handhabung mit Log-Ausgaben oder Dokumentation oder mit einem Wrapper-Skript, das vagrant up && vagrant reload aufruft.

Und schließlich könntest du ein Plugin schreiben, das nach der Provisionierung alle benötigten mounting etc. Aktionen in den Middleware-Stack von Vagrant einfügt, aber du müsstest immer noch darüber nachdenken, wie du dem Plugin mitteilen kannst, dass der Rechner gebootet wurde. Eine andere Herausforderung ist, dass dies leicht Provider-spezifisch wird.

    
tmatilai 28.05.2014, 07:25
quelle
1

Teilen Sie Ihre Provisioner in zwei separate Schritte auf und verwenden Sie das Vagrant-Reload-Plugin als zusätzlichen Provisioner zwischen.

Beispiel Vagrantfile:

%Vor%     
nioncode 21.03.2017 18:57
quelle

Tags und Links