如何在配置时解锁 vagrant 机器

Vig*_*jis 5 vagrant vagrantfile

我们的 vagrant box 需要大约 1 小时来配置vagrant up,因此当第一次运行时,在配置过程的最后,我想将该框打包到本地文件夹中的图像,以便下次可以将其用作基本框需要重建。我正在使用 vagrant-triggers 插件将代码放在 :up 进程的末尾。

相关(缩短的)Vagrantfile:

pre_built_box_file_name = 'image.vagrant'
pre_built_box_path      = 'file://' + File.join(Dir.pwd, pre_built_box_file_name)
pre_built_box_exists    = File.file?(pre_built_box_path)
Vagrant.configure(2) do |config|
  config.vm.box     = 'ubuntu/trusty64'
  config.vm.box_url = pre_built_box_path if pre_built_box_exists
  config.trigger.after :up do
    if not pre_built_box_exists
      system("echo 'Building gett vagrant image for re-use...'; vagrant halt; vagrant package --output #{pre_built_box_file_name}; vagrant up;")
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

vagrant up问题是 vagrant 在当前 ( ) 进程运行时锁定机器:

An action 'halt' was attempted on the machine 'gett',
but another process is already executing an action on the machine.
Vagrant locks each machine for access by only one process at a time.
Please wait until the other Vagrant process finishes modifying this
machine, then try again.
Run Code Online (Sandbox Code Playgroud)

我了解两个进程在给定时间配置或修改计算机的危险,但这是一种特殊情况,我确信配置已完成。

如何在配置期间手动“解锁”流浪机器,以便我可以vagrant halt; vagrant package; vagrant up;从内部运行config.trigger.after :up

或者至少有一种方法可以vagrant up在不锁定机器的情况下启动?

ken*_*orb 3

流浪汉

此问题已在GH #3664 (2015) 中修复。如果这种情况仍然发生,可能与插件(例如 AWS)有关。所以尝试不使用插件。

流浪者AWS

如果您使用的是 AWS,请按照此错误/功能报告进行操作:#428 - 在配置期间无法通过 ssh 进入实例,该报告目前正在等待处理。

不过,有一个拉取请求可以解决该问题:

因此,请手动应用修复程序,或者等到下一个版本修复该问题。


如果您遇到与无效机器相关的错误,请尝试运行该vagrant global-status --prune命令。