как разблокировать бродячую машину во время ее подготовки

Для подготовки нашего бродячего ящика требуется ~ 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 без блокировки машины?


person Vigintas Labakojis    schedule 17.07.2015    source источник
comment
Почему бы просто не vagrant up && vagrant halt && vagrant package && vagrant up из командной строки?   -  person Jon Burgess    schedule 22.07.2015
comment
Думал, что простой vagrant up позаботится о vagrant box add ... или vagrant box remove ... && vagrant box add ... в случае, если image.vagrant файл будет удален для перестроения. Может быть, я просто слишком усложняю вещи здесь.   -  person Vigintas Labakojis    schedule 22.07.2015
comment
ps aux | grep "vagrant" скопируйте PID процесса, а затем kill -9 <PID>   -  person andilabs    schedule 13.10.2015


Ответы (1)


бродяга

Эта проблема была исправлена ​​в GH 3664 (2015 г.). Если это все еще происходит, возможно, это связано с плагинами (такими как AWS). Так что попробуй без плагинов.

бродяга

Если вы используете AWS, следуйте этому отчету об ошибках/функциях: #428 - Невозможно подключиться по ssh в экземпляр во время подготовки, которая в данный момент находится на рассмотрении.

Однако есть запрос на извлечение, который устраняет проблему:

Поэтому примените исправление вручную или подождите, пока оно не будет исправлено в следующем выпуске.


Если эта ошибка связана с недействительными машинами, попробуйте запустить команду vagrant global-status --prune.

person kenorb    schedule 27.06.2016
comment
Привет, спасибо за усилия, но, как вы можете видеть в вопросе, мне нужен был способ разблокировать машину во время vagrant up. Не имеет отношения к AWS, vagrant ssh или vagrant status. - person Vigintas Labakojis; 27.06.2016
comment
Первая проблема связана с самим бродягой и звучит так, как будто она исправлена, вторая часть — на тот случай, если вы используете aws. - person kenorb; 27.06.2016