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在不锁定机器的情况下启动?
此问题已在GH #3664 (2015) 中修复。如果这种情况仍然发生,可能与插件(例如 AWS)有关。所以尝试不使用插件。
如果您使用的是 AWS,请按照此错误/功能报告进行操作:#428 - 在配置期间无法通过 ssh 进入实例,该报告目前正在等待处理。
不过,有一个拉取请求可以解决该问题:
因此,请手动应用修复程序,或者等到下一个版本修复该问题。
如果您遇到与无效机器相关的错误,请尝试运行该vagrant global-status --prune命令。
| 归档时间: |
|
| 查看次数: |
12874 次 |
| 最近记录: |