{{tag>vagrant chef shell puppet salt ansible docker virtual}}

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

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


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

<code bash>
$ vagrant up
</code>

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

Допустим старая машина называлась workshop_y2aa_1019854008234_12823 и ее файлы конфигурации находились в папке
<code>/Users/imac/VirtualBox VMs/workshop_y2aa_1019854008234_12823/contrib-stretch.vmdk</code>

Где contrib-stretch.vmdk - это название виртуального жесткого диска, состоящее из название установленного дистрибутива. Описанного в конфигурационном файле Vagrantfile. К примеру для Debian 9 contrib это будет - <code>config.vm.box = 'debian/contrib-stretch64'</code>

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

Пример:
<code bash>
$ cp /Users/imac/VirtualBox VMs/workshop_y2aa_1019854008234_12823/contrib-stretch.vmdk /Users/imac/VirtualBox VMs/workshop_y2aa_1519853008354_63852/contrib-stretch.vmdk
</code>

Затем запускаем машину и логинимся как обычно, или с помощью ключа или пароля. Запускать машину необходимо через 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 в файл

<code>
.vagrant/machines/y2aa/virtualbox/private_key
</code>

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

<code>
~/.ssh/authorized_keys
</code>

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

<code bash>
$ vagrant halt
$ vagrant up
</code>

<note tip>Все должно работать без проблем.</note>