Ich benutze Vagrant, um eine Ubuntu-Box auf Virtualbox einzurichten. In der Vagabund Datei, die ich synchronisiert Ordner angegeben habe, meinen Code mit dem Gast zu synchronisieren:Vagrant synchronisierte Ordner schreibt über Hosts-Dateien, wenn Vagabund
config.vm.synced_folder "/host/target/webapp", "/guest/webapp"
Das Problem Ich habe nur angezeigt, wenn ich die Maschine zerstört wird und dann mit Vagabund auf neu aufgebaut. In diesem Fall synchronisiert Vagrant meine Ordner auf dem Gast mit meinem Ordner auf dem Host anstelle von Host auf Gast.
"/guest/webapp" ---> "/host/target/webapp"
Ich mag dieses Verhalten überhaupt nicht, wenn ich in meinem Code auf der Host-meine Versionskontrolle nicht überprüft habe, werde ich meinen Code verloren.
Sollte die Synchronisierung bidirektional sein? Gibt es eine Möglichkeit, es so zu konfigurieren, dass nur ein bevorzugter Host mit dem Gast synchronisiert wird? Konnte nichts darüber in vagrant basic sync
In den Kommentaren finden Sie dort, wo Vorschläge, dass es wo meine Bereitstellung (Chef-Solo), wo die Ursache des Problems. Um die Bereitstellung Phase von dieser auszuschließen Ich habe folgende:
Vagrant bis --no-Bereitstellung
Der Gastgeber Inhalt, wo dem Gast synchronisiert.
rm -r/Gast/webapp/auf dem Gast
in den hosts-Inhalten mit dem ebenfalls entfernt.
mkdir/Gast/webapp/Test auf dem Gast
Die erstellten Ordner Test, in dem auch auf dem Host erstellt.
Ich denke, das beweist, dass die Synchronisierung bidirektional ist.
Das ist wirklich seltsam, da ich nur Host -> Gast gesehen habe, also selbst wenn Sie einen vorhandenen Ordner auf Gast synchronisieren, wird er durch den Inhalt des Ordners vom Host ersetzt. Ich habe auch einige Zweifel, wenn der Host-Ordner vom Inhalt des Gastes ersetzt wurde, dann ist Ihr aktueller Ordner leer, da ein Standardordner als '/ vagrant' mit dem aktuellen Ordner synchronisiert wird. für diesen Fall (der Ordner/vagrant) bestätigen Sie, dass es richtig funktioniert? –
Ich verstehe deine Zweifel. Ich verwende Chef-Solo für die Bereitstellung, die Standarddaten an "/ guest/webapp" legt, ich weiß nicht, was zuerst passiert, die Synchronisierung der Ordner oder die Bereitstellung, die die Standarddaten lädt. Dies geschieht nur, wenn es die erste Bereitstellung ist, mit anderen Worten, wenn ich ein Vagrant reload/up --Provision ausführen und die Box bereits erstellt wurde, wird der Host-Ordner nicht überschrieben. –
Das Bereitstellen von freigegebenen Ordnern erfolgt vor der Bereitstellung. Starten Sie einfach 'vagrant up' zum ersten Mal ohne Bereitstellung von' vagrant up --no-provision' und Sie werden sehen, der Host-Ordner wird nicht geändert, es _muss_ kommen aus Ihrer Bereitstellung –