Vagrant — автоматизация виртуальных машин

Vagrant — система администрирования виртуальных машин из коммандной строки.
Vagrant сама по себе не является виртуальной машиной, это средство автоматизации управления чужими виртуальными машинами например Virtual Box.
Можно использоваться готовыми контейнерами виртуальных машин, указав образ, который необходимо загрузить в конфигурационном файле Vagrant или самостоятельно собрать собственный контейнер.

Просмотр версии:
vagrant — -version 

https://app.vagrantup.com/boxes/search — список доступных образов

Создание машины:
vagrant init generic/centos7
Включение машины:
vagrant up
Запрос состояния машин: 
vagrant status 
Полное выключение машины :
vagrant halt
Удаление машины :
vagrant destroy
Зайти в машину по ssh :
vagrant ssh

Допишим в файл ключей запись о машине которая хоччет подключаться к виртуальной :
vim ~/.ssh/authorized_keys


В хост системе в отдельном терминале выведем свой публичный ключ и его содержимое добавим в конец файла на виртуальной машине:
vim ~/.ssh/id_rsa.pub

После этого можно попасть на виртуальную машину :
ssh -p 2222 vagrant@127.0.0.1

По умолчанию в виртуальной машине создается пользователь vagrant с паролем vagrant
Выполнение команд от root возможно с применением sudo , работает даже на CentOS

На хост машине имеется файл конфигурации Vagrantfile, в нем можно задать свои параметры, пробросить порт увеличить память и тд, без учета комментариев это выглядит так:

Vagrant.configure("2") do |config|
  config.vm.box = "generic/centos7"
  config.vm.provider "virtualbox" do |vb|
        vb.memory = "2048"
   end
   config.vm.network "forwarded_port", guest: 80, host: 8080
   config.vm.synced_folder "src/", "/srv/website" , disable: true

   config.vm.provision "shell", inline: <<-SHELL
     sudo yum -y update
     sudo yum install -y httpd
     sudo systemctl enable httpd
     sudo systemctl start httpd
     sudo firewall-cmd --zone=public --add-service=http --permanent
     sudo systemctl restart firewalld.service
   SHELL
end

1 Скачается и создастся виртуальная машина на базе CentOS с оперативной памятью 2 Гб, 
2 Из виртуальной машины будет проброшен порт 80 -> 8080 хост системы
3 Будет создана общая папка для синхронизации файлов ( /src — на хосте , /srv/website  на виртуалке.
4 Система обновиться
5 Установится web сервер , он будет добавлен в «автозагрузку» 
6 На постоянной основе под него будет открыт порт на фаерволе.

Документация по применяемым параметрам :

https://www.vagrantup.com/docs/vagrantfile/machine_settings.html

Конвертация Raw образов дисков в формат VirtualBox

Бывает необходимость перенести проект из облака в локальную сеть.
Многие сервисы предлагающие VPS имеют функцию скачать образ вашего жесткого диска в формате raw.
Поле того как вы получите слепок диска на свой локальный компьютер его можно сконвертировать в формат понятный VB (*.vmdk)

VBoxManage convertfromraw /Users/Downloads/rawdiskfile vdhard.vmdk --format VMDK

Далее использовать его новых или имеющихся виртуальных машин.

Debian 9 в VirtualBox + Guest Additions

Установка Guest Additions в VirtualBox нужно для лучшей потдержки графики, работы буфера обмена и доступа к жесткому диску хост машины.
1. Загружаем Debian в VirtualBox, открываем Терминал и переходим в режим супер-пользователя. SU

 SU 

2. Обновляем систему

apt-get update
apt-get upgrade

3. Установка необходимых модулей ядра, заголовочные файлы.

apt install build-essential module-assistant dkms

4. Сборка модулей ядра

m-a prepare

5. В меню VirtualBox (Device -> insert Guest Additions CD image)

sh /media/cdrom/VBoxLinuxAdditions.run

Процесс должен завершиться без ошибок!
6. Перезагружаем систему

shutdown -r now