2016-04-22 12 views
0

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.

+0

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? –

+0

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. –

+0

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 –

Antwort

1

so sind vagrant Synced folders wirklich synchronisiert (wahrscheinlich, warum sie nicht nur freigegebenen Ordner genannt), also sobald Sie Ihren Ordner synchronisieren, was Aktion, die Sie auf der einen Seite machen wird auf der anderen Seite automatisch synchronisiert/repliziert werden. (Ob es von dem Host oder der Gast kommt)

Wenn Sie wirklich ein One-Way-Sharing möchten, können Sie sehen [rsync] (https://www.vagrantup.com/docs/synced-folders/rsync.html)

Vagrant rsync als Mechanismus verwenden können, um die Synchronisierung ein Ordner für den Gast Maschine. Dieser synchronisierte Ordnertyp ist vor allem in Situationen nützlich, in denen andere synchronisierte Ordnermechanismen nicht verfügbar sind, z. B. wenn freigegebene NFS- oder VirtualBox-Ordner nicht im Gastcomputer verfügbar sind.

Der synchronisierte rsync-Ordner führt eine einmalige unidirektionale Synchronisierung von der Maschine aus, die zu der von Vagrant gestarteten Maschine läuft.

+0

Danke für die Hilfe Frederic! –

+0

kein Problem, froh, dass wir es löschen :) –

Verwandte Themen