2015-04-19 9 views
18

Konfiguruję zsynchronizowany folder na komputerze typu włóczęga, jak pokazano poniżej w zrzutach cmd, i oczekuję, że za każdym razem, gdy będę aktualizował pliki w tym folderze na komputerze hosta, aktualizacje zostaną odzwierciedlone w środku również maszyna gościa, jednak tak się nie dzieje.Zsynchronizowany folder w vagrantach nie synchronizuje się w czasie rzeczywistym

Oto zrzut i dowody nie dzieje (utworzyć przykładowy plik i go zmodyfikować, zmieniając tekst w nim od test1 do test2):

mypc:~ user$ cd Projects/synctest/ 
mypc:synctest user$ ls 
Vagrantfile 
mypc:synctest user$ cat Vagrantfile 
# -*- mode: ruby -*- 
# vi: set ft=ruby : 

VAGRANTFILE_API_VERSION = "2" 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 

    # always use Vagrants insecure key 
    config.ssh.insert_key = false 

    # Setup box 
    config.vm.box = "coreos-stable" 

    # Setup shared folder 
    config.vm.synced_folder ".", "/vagrant" 

    # Setup memory usage 
    config.vm.provider "virtualbox" do |v| 
    v.memory = 2048 
    end 

    # Define `dev` vm 
    config.vm.define :dev do |dev| 
    end 

    if Vagrant.has_plugin?("vagrant-cachier") 
    config.cache.scope = :box 
    end 

end 
mypc:synctest user$ echo "test1" > test.txt 
mypc:synctest user$ cat test.txt 
test1 
mypc:synctest user$ vagrant up 
Bringing machine 'dev' up with 'virtualbox' provider... 
==> dev: Importing base box 'coreos-stable'... 
==> dev: Matching MAC address for NAT networking... 
==> dev: Checking if box 'coreos-stable' is up to date... 
==> dev: Setting the name of the VM: synctest_dev_1429451824339_35638 
==> dev: Fixed port collision for 22 => 2222. Now on port 2200. 
==> dev: Clearing any previously set network interfaces... 
==> dev: Preparing network interfaces based on configuration... 
    dev: Adapter 1: nat 
==> dev: Forwarding ports... 
    dev: 22 => 2200 (adapter 1) 
==> dev: Running 'pre-boot' VM customizations... 
==> dev: Booting VM... 
==> dev: Waiting for machine to boot. This may take a few minutes... 
    dev: SSH address: 127.0.0.1:2200 
    dev: SSH username: core 
    dev: SSH auth method: private key 
    dev: Warning: Connection timeout. Retrying... 
==> dev: Machine booted and ready! 
==> dev: Rsyncing folder: /Users/user/Projects/synctest/ => /vagrant 
==> dev: Rsyncing folder: /Users/user/.vagrant.d/cache/coreos-stable/ => /tmp/vagrant-cache 
==> dev: Configuring cache buckets... 
mypc:synctest user$ vagrant ssh 
CoreOS stable (633.1.0) 
[email protected] ~ $ cd ../../vagrant/ 
[email protected] /vagrant $ ls 
Vagrantfile test.txt 
[email protected] /vagrant $ cat test.txt 
test1 
[email protected] /vagrant $ exit 
logout 
Connection to 127.0.0.1 closed. 
mypc:synctest user$ cat test.txt 
test1 
mypc:synctest user$ echo "test2" > test.txt 
mypc:synctest user$ cat test.txt 
test2 
mypc:synctest user$ vagrant ssh 
Last login: Sun Apr 19 13:57:37 2015 from 10.0.2.2 
CoreOS stable (633.1.0) 
[email protected] ~ $ cd ../../vagrant/ 
[email protected] /vagrant $ ls 
Vagrantfile test.txt 
[email protected] /vagrant $ cat test.txt 
test1 
[email protected] /vagrant $ echo "hi from guest machine" > test.txt 
[email protected] /vagrant $ cat test.txt 
hi from guest machine 
[email protected] /vagrant $ exit 
logout 
Connection to 127.0.0.1 closed. 
mypc:synctest user$ cat test.txt 
test2 
mypc:synctest user$ 

Czy to w ogóle miało być synchronizowane w czasie rzeczywistym? Jeśli tak, dlaczego nie synchronizujesz?

Edycja: OS X 10.8.5, VirtualBox, coreos box.

Odpowiedz

25

W twoim Vagrantfile zsynchronizowany typ folderu jest domyślnie vboxsf, jednak w vagrant up stdout, pokazuje typ rsync, myślę, że musisz to naprawić w pliku konfiguracyjnym.

Załóżmy, że używasz typu rsync, powinny być spełnione następujące wymagania w Vagrantfile

Vagrant.configure("2") do |config| 
    config.vm.synced_folder ".", "/vagrant", type: "rsync", 
    rsync__exclude: ".git/" 
end 

UWAGA: Domyślnie rsync__auto jest ustawiony na true, co oznacza rsync-auto będzie oglądać i automatycznie synchronizować ten folder .

Uruchom vagrant rsync-auto, a katalog powinien być zsynchronizowany między hostem a gościem.

Aby uzyskać więcej informacji, patrz vagrant docs.

+0

Dzięki za odpowiedź. Wygląda na to, że problem dotyczy pudełka "coreos". Domyślna konfiguracja naprawdę nie działa z tym. Skończyło się na naśladowaniu konfiguracji zsynchronizowanych folderów z vagrant z [repozytorium coreos-vagrant] (https://github.com/coreos/coreos-vagrant/blob/master/Vagrantfile), ponieważ rsync-auto nie działało dla mnie (I musiało jawnie uruchomić 'vagrant rsync-auto', aby działał). Nawiasem mówiąc, w innych polach (szczególnie 'ubuntu/trusty64') domyślna konfiguracja synchronizacji działa poprawnie. –

+0

Cieszę się, że mogę pomóc. Coś właśnie przyszło mi do głowy, czy CoreOS/system plików (subwoofer Btrfs) powinien być tylko do odczytu? To może być przyczyną ... –

+0

Niestety mam ten sam problem z oficjalnym pudełkiem Fedora 22 Vagrant. Dodanie sugerowanej konfiguracji i uruchomienie 'vagrant rsync-auto' nie przyniosło żadnych rezultatów. – DuffJ

Powiązane problemy