Для подготовки нашего бродячего ящика требуется ~ 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
Проблема в том, что vagrant блокирует машину во время работы текущего (vagrant up
) процесса:
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.
Я понимаю опасность двух процессов подготовки или изменения машины в одно и то же время, но это особый случай, когда я уверен, что подготовка завершена.
Как я могу вручную «разблокировать» бродячую машину во время подготовки, чтобы я мог запускать vagrant halt; vagrant package; vagrant up;
из config.trigger.after :up
?
Или есть хотя бы способ запустить vagrant up
без блокировки машины?
vagrant up && vagrant halt && vagrant package && vagrant up
из командной строки? - person Jon Burgess   schedule 22.07.2015vagrant up
позаботится оvagrant box add ...
илиvagrant box remove ... && vagrant box add ...
в случае, еслиimage.vagrant
файл будет удален для перестроения. Может быть, я просто слишком усложняю вещи здесь. - person Vigintas Labakojis   schedule 22.07.2015ps aux | grep "vagrant"
скопируйте PID процесса, а затемkill -9 <PID>
- person andilabs   schedule 13.10.2015