Vagrant synced_folder fmode vs file_mode

#vagrant #virtualbox #hyper-v

#vagrant #virtualbox #hyper-v

Вопрос:

Используя Vagrant, нужно использовать подобные конфигурации для использования с Hyper-V против Virtualbox:

(Virtualbox)

 config.vm.synced_folder ".", "/var/www/btoc/", mount_options: ["fmode=666", "dmode=777"]
 

(Hyper-V)

 config.vm.synced_folder ".", "/var/www/btoc/", mount_options: ["file_mode=0777", "dir_mode=0777"]
 

Разница только в fmode / dmode и file_mode / dir_mode.
Но это приводит к невозможности запуска соответственно другого. Vagrant up умирает с загадочными сообщениями / проблемами при попытке.

Есть ли обходной путь для этого?
Почему было принято это решение?
Это просто плохое решение или я упускаю что-то очевидное?

Использование Vagrant 2.2.3 в Windows.

Ответ №1:

если у вас разные настройки для каждого поставщика, вы можете переопределить настройку в разделе, соответствующем поставщику:

 Vagrant.configure("2") do |config|
  config.vm.box = "xxxx"

  config.vm.provider "virtualbox" do |vb, override|
    override.vm.synced_folder ".", "/var/www/btoc/", mount_options: ["fmode=666", "dmode=777"]
  end

  config.vm.provider "hyperv" do |h, override|
    override.vm.synced_folder ".", "/var/www/btoc/", mount_options: ["file_mode=666", "dir_mode=777"]
  end

end
 

Комментарии:

1. Потрясающе! Это решает мою первоначальную боль — спасибо! Хотя решение назвать коммутатор по-разному на разных платформах для программного обеспечения с перекрестной платформой кажется все еще сомнительным, по крайней мере?

2. это может быть, но поскольку vagrant полагается на этих провайдеров, а поведение провайдера отличается, vagrant нуждается в некоторой поддержке со стороны vagrantfile, чтобы знать, как заставить его работать для вашего варианта использования на всех разных платформах