Я хочу использовать Vagrant для обеспечения общей среды разработки для моей команды. Хосты совершенно разные:
- Некоторые используют OS X, некоторые Linux и некоторые Windows.
- Некоторые используют VMware, некоторые используют VirtualBox.
Внутри виртуальной машины мы хотим запустить Linux.
Пока все в порядке.
Теперь наша идея заключалась в том, что каждый разработчик сможет использовать IDE по своему выбору, и поэтому мы представили синхронизированную папку, которая разделяет исходный код между хостом и виртуальной машиной. Это в основном, работает также... кроме символических ссылок.
Внутри нашего исходного кода у нас фактически есть несколько символических ссылок, что не является проблемой внутри Linux внутри VM, но в Windows как хост это вызывает проблемы. Единственное, чего мы не можем сделать, это избавиться от символических ссылок, поэтому нам нужен другой способ справиться с этим.
До сих пор мы пробовали несколько вариантов:
- Существует обходное решение, упомянутое в issue Vagrant, к сожалению, это только VirtualBox и не помогает тем, кто запускает VMware. До сих пор мы не нашли способ запуска кода в Vagrantfile в зависимости от используемого провайдера.
- Вместо использования стандартной общей папки мы попытались использовать тип rsync. Это работает в Windows, но сбой в ОС X с рядом ошибок говорит нам, что
symlink has no referent
(одна ошибка для символической ссылки). - Мы думали о NFS, но это работает только в том случае, если вы не используете Windows в качестве хоста.
- Мы также о SMB, но это снова работает только на Windows в качестве хоста.
Я не могу себе представить, что мы единственные или первые люди на этой планете испытываем проблемы с многоплатформенными хостами и символическими ссылками в общей папке.
Как вы можете решить эту проблему, чтобы мы могли сохранять символические ссылки, но все же использовать разные операционные системы хоста?