Chcę używać Vagrant, aby zapewnić mojemu zespołowi wspólne środowisko programistyczne. Gospodarze są zupełnie inni:
- Niektórzy używają OS X, niektórzy Linux, a niektórzy Windows.
- Niektórzy używają VMware, niektórzy używają VirtualBox.
Wewnątrz maszyny wirtualnej chcemy uruchomić Linuksa.
Jak dotąd wszystko jest w porządku.
Nasz pomysł polegał na tym, że każdy programista będzie mógł korzystać z wybranego przez siebie IDE, dlatego wprowadziliśmy zsynchronizowany folder, który udostępnia kod źródłowy między hostem a maszyną wirtualną. Zasadniczo działa to również… z wyjątkiem dowiązań symbolicznych.
Wewnątrz naszego kodu źródłowego faktycznie mamy kilka dowiązań symbolicznych, co nie jest problemem w Linuksie wewnątrz maszyny wirtualnej, ale w systemie Windows jako hosta powoduje to problemy. Jedyne, czego nie możemy zrobić, to pozbyć się dowiązań symbolicznych, więc potrzebujemy innego sposobu, aby sobie z tym poradzić.
Do tej pory wypróbowaliśmy kilka opcji:
- W numerze Vagrant jest omówione obejście , niestety jest to tylko VirtualBox i nie pomaga tym, którzy używają VMware. Jak dotąd nie znaleźliśmy sposobu na uruchomienie kodu w Vagrantfile w zależności od używanego dostawcy.
- Zamiast używać standardowego folderu współdzielonego, próbowaliśmy teraz użyć typu rsync . Działa to w systemie Windows, ale ulega awarii w systemie OS X z wieloma błędami informującymi nas, że
symlink has no referent
(jeden błąd na łącze symboliczne). - Myśleliśmy o NFS , ale działa to tylko wtedy, gdy nie używasz systemu Windows jako hosta.
- Pomyśleliśmy również o SMB , ale to znowu działa tylko w systemie Windows jako host.
Nie mogę sobie wyobrazić, że jesteśmy jedynymi lub pierwszymi osobami na tej planecie, które mają problemy z wieloplatformowymi hostami i symbolicznymi linkami w udostępnionym folderze.
Jak rozwiązać ten problem, abyśmy mogli zachować dowiązania symboliczne, ale nadal używać różnych systemów operacyjnych hosta?