运行官方FreeBSD vagrant框时配置的shell错误无效

Osh*_*sor 9 ssh freebsd vagrant vagrantfile

我尝试使用以下命令运行FreeBSD官方流浪盒:

vagrant init freebsd/FreeBSD-10.2-STABLE
Run Code Online (Sandbox Code Playgroud)

然后,根据https://forums.freebsd.org/threads/52717/上的说明修改我的Vagrantfile ,添加以下行:

Vagrant.configure("2") do |config|
  config.vm.guest = :freebsd
  config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
  config.vm.box = "freebsd/FreeBSD-10.2-STABLE"
  config.ssh.shell = "sh"
  config.vm.base_mac = "080027D14C66"

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "1024"]
    vb.customize ["modifyvm", :id, "--cpus", "1"]
    vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
    vb.customize ["modifyvm", :id, "--audio", "none"]
    vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
    vb.customize ["modifyvm", :id, "--nictype2", "virtio"]
  end
end
Run Code Online (Sandbox Code Playgroud)

当我发出vagrant up命令时:

vagrant up --provider virtualbox
Run Code Online (Sandbox Code Playgroud)

显示以下错误:

配置的shell(config.ssh.shell)无效,无法正确执行命令.最常见的原因是使用系统上不可用的shell.请验证您是否正在使用shell的完整路径,并且SSH可由SSH用户执行.

无论错误如何,我仍然可以vagrant ssh进入框中.但是,我无法正常关闭机器vagrant halt.它会显示与上面相同的错误,并且根本不会关闭.

Osh*_*sor 5

修复很简单,因为对我而言这完全是菜鸟的错误。在Vagrantfile中,应该删除运行vagrant init命令时生成的所有部分,但最顶部的两行除外。然后将建议的内容粘贴到这两行下面。完整的Vagrantfile应该如下所示:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
    config.vm.guest = :freebsd
    config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
    config.vm.box = "freebsd/FreeBSD-10.2-STABLE"
    config.ssh.shell = "sh"
    config.vm.base_mac = "080027D14C66"

    config.vm.provider :virtualbox do |vb|
      vb.customize ["modifyvm", :id, "--memory", "1024"]
      vb.customize ["modifyvm", :id, "--cpus", "1"]
      vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
      vb.customize ["modifyvm", :id, "--audio", "none"]
      vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
      vb.customize ["modifyvm", :id, "--nictype2", "virtio"]
    end

    config.vm.network "private_network", ip: "192.168.33.10"
end
Run Code Online (Sandbox Code Playgroud)

我做错的是将此Vagrant.configure("2") do |config|块嵌套在自动生成的块中。