Восстановление настроек коробочки

Иногда случается так, что случайно или намеренно была удалена папка .vagrant, содержащая настройки для подключения к ранее созданной виртуальной машине.

Восстанавливаем конфигурацию

$ vagrant up

При этом будет создана новая виртуальная машина с настройками по умолчанию. В данном случае мы рассматриваем виртуальную машину на базе Virtualbox. Для восстановления нужных нам настроек мы открываем Virtualbox.app находим вновь созданную машину и останавливаем ее. Далее находим папки содержащие старые и новые файлы конфигурации виртуальной машины и жесткого диска. Как правило это файл с расширение vmdk.

Допустим старая машина называлась workshop_y2aa_1019854008234_12823 и ее файлы конфигурации находились в папке

/Users/imac/VirtualBox VMs/workshop_y2aa_1019854008234_12823/contrib-stretch.vmdk

Где contrib-stretch.vmdk - это название виртуального жесткого диска, состоящее из название установленного дистрибутива. Описанного в конфигурационном файле Vagrantfile. К примеру для Debian 9 contrib это будет -

config.vm.box = 'debian/contrib-stretch64'

Копируем из старой папки только файл - образа жесткого диска. Для MacOS, он находится в папке по адресу /Users/imac/VirtualBox VMs/

Пример:

$ cp /Users/imac/VirtualBox VMs/workshop_y2aa_1019854008234_12823/contrib-stretch.vmdk /Users/imac/VirtualBox VMs/workshop_y2aa_1519853008354_63852/contrib-stretch.vmdk

Затем запускаем машину и логинимся как обычно, или с помощью ключа или пароля. Запускать машину необходимо через Virtualbox.app, так как vagrant устанавливает седенение с хост машиной с использованием rsa ключа, который на данный момент у нас отсутствует.

Восстанавливаем ключи для запуска через vagrant

Логинимся под стандартным пользователем vagrant c паролем vagrant или без пароля. Предварительно в настройках ssh сервера виртуальной машины должно быть разрешено подключение с использованием пароля.

Переходим на страницу с заранее созданными ключами https://github.com/hashicorp/vagrant/tree/master/keys (благодарим hashicorp), или создаем ключи с помощью утилиты ssh-keygen (varant работает только с RSA ключами).

Прописываем приватный ключ https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant для vagrant в файл

.vagrant/machines/y2aa/virtualbox/private_key

И затем заходим на виртуальную машину и там прописываем ключ https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub

~/.ssh/authorized_keys

Затем перезапускает нашу виртуальную машину через vagrant

$ vagrant halt $ vagrant up
Все должно работать без проблем.