Vagrant:如何在 Windows 中挂载 Linux 共享文件夹

Vagrant:如何在 Windows 中挂载 Linux 共享文件夹

主机系统:Ubuntu Linux,客户系统:Windows(任意版本)。

我想在 Windows 系统上共享一个 Linux 文件夹。

当我使用 VirtualBox 时,我通过 GUI 配置所有设置。共享文件夹设置如下:

Name: downloads
Path: /home/user/downloads
Access: Full
Auto Mount: Yes
At: Z:

启动虚拟机后,共享文件夹似乎已挂载到磁盘Z,一切正常。

问题:我如何使用 Vagrant 做同样的事情?

我在文件中创建了虚拟机的映像package.box。然后我配置了 Vagrant ( config.vm.box = "./package.box"),并启动了机器。一切都很好,但是我如何配置共享文件夹以自动挂载?

我尝试了不同的选择,我的最后一个选择是:

config.vm.synced_folder "../shared-data", "X:\\", create: true, id: "X"

共享文件夹设置如下:

Name: X
Path: /home/user/downloads
Access: Full
Auto Mount: (empty)
At: (empty)

如何让 Vagrant 自动挂载共享文件夹(Auto MountAt)?

以防万一:客户系统没有配置 SSH,因此 Vagrant 会挂起“正在等待机器启动。这可能需要几分钟”的消息。我稍后会修复它,VM 会启动并正常工作。

附言:Vagrantfile

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

  config.vm.synced_folder "../shared-data", "X:\\", create: true, id: "X"

  config.vm.provider "virtualbox" do |vb|
    vb.name = "Win Vagrant test"
    vb.gui = true

    vb.memory = "2048"
    vb.cpus = 2
  end
end

答案1

取决于提供商。使用 virtualbox;像为 linux 客户机定义共享一样定义共享。virtualbox config.vm.synced_folder ".", "/vagrant", disabled: false 会将其挂载在 下,C:\vagrant这似乎是一个链接,\\vboxsvr\vagrant\但该符号在 vagrant 配置中不起作用。

其他文件夹将以相同方式显示。不确定如果文件夹名称受保护、长度超过 8 个字符或使用 Windows 上禁用的字符会发生什么。这些都是需要牢记的限制。

答案2

我的问题是 Vagrant 挂载了共享目录虚拟机启动。但在我的例子中,Vagrant 等待虚拟机启动几分钟,但未检测到它已启动,然后显示错误。Vagrant 通过 SSH 或 WinRM 检查虚拟机的可用性。

这是我所做的:

  1. 启动并配置 WinRM:winrm quickconfig
  2. 将 WinRM 服务配置为自动启动(延迟启动)——这可以加快检测速度,但不是必需的
  3. 创建用户vagrant并将其包含在管理员组中以便能够使用 WinRM。
  4. 修复了 Vagrant 配置:
  # WinRM
  config.vm.communicator = "winrm"
  config.winrm.username = "vagrant"
  config.winrm.password = "vagrant"
  config.winrm.max_tries = 300 # default is 20
  config.winrm.retry_delay = 2 #seconds. This is the defaul value and just here for documentation.

  # Shared folder  
  config.vm.synced_folder "../shared-data", "/vagrant"

以下是启动日志的一部分,显示仅在收到 VM 启动事件后才会发生目录挂载。

==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 5985 (guest) => 55985 (host) (adapter 1)
    default: 5986 (guest) => 55986 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: WinRM address: 127.0.0.1:55985
    default: WinRM username: vagrant
    default: WinRM execution_time_limit: PT2H
    default: WinRM transport: negotiate
==> default: Machine booted and ready!
[default] GuestAdditions 6.1.48 running --- OK.
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => /home/user/tmp/vagrant-test/shared-data
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

相关内容