Изучаем Vagrant


Баги

Не работает сеть в ubuntu-16.04

Чтобы прописать статический IP виртуалке, нужно в Vagrantfile добавить


  config.vm.box = "bento/ubuntu-16.04"
  config.vm.network "private_network", ip: "33.33.33.10", auto_config: false
  config.vm.provision 'shell', inline: "ifconfig eth1 33.33.33.10"

На ubuntu-12.04 таких проблем нет, просто хватает


  config.vm.box = "ubuntu/precise64"
  config.vm.network "private_network", ip: "192.168.177.10"

Установка

1) Устанавливаем виртуалбокс и вагрант


sudo apt-get install vagrant
sudo apt-get install virtualbox

баг с разрядностью виртуалки

2) Качаем бокс с убунтой


vagrant box add ubuntu/xenial64

Список боксов можно посмотреть через list


vagrant box list
ubuntu/xenial64 (virtualbox, 20190429.0.1)

Удалить бокс


vagrant box remove ubuntu/trusty64
Removing box 'ubuntu/trusty64' (v20190429.0.1) with provider 'virtualbox'...

3) Создаем Vagrantfile с указаной машиной


vagrant init hashicorp/precise32

4) Запускаем бокс


vagrant up

4) Получить список машин


vagrant global-status 
id       name    provider   state    directory                           
-------------------------------------------------------------------------
a35990f  default virtualbox poweroff /home/avis/vagrant                  

Настройка

Подключение по ssh


vagrant ssh

Остановка машины


vagrant suspend

Выключение машины


vagrant halt

Останавливает и уничтожает машину.


vagrant destroy

Перезагрузка с перечтением конфига


vagrant reload --provision

Если передать ключик --provision, то при старте будет перечитан Vagrantfile, иначе будет старый конфиг.

Настройка Vagrantfile

Все действия внутри `Vagrant.configure(2) do |config|` ... `end`

Задать имя в vagrant global-status


config.vm.define "ubuntu1" do |t|
end

Задать имя в VirtualBox


config.vm.provider "virtualbox" do |v|
    v.name = "ubuntu1"
end

Задаем ip

! Не работает


config.vm.network "private_network", ip: "192.168.33.10"

Проброс порта

— Он направит 80-й порт изнутри на 8000-й снаружи;

т.е. Внутри машины - localhost:80, снаружи - ip:8000


config.vm.network :forwarded_port, guest: 80, host: 8000

Маунт дир с тачки в виртуалку


config.vm.synced_folder ".", "/project"