Задача: Установить Vagrant on Ubuntu Trusty Desktop (+Gnome Classic)

Надоела возня с графическим интерфейсом (Virtualbox), хочу автоматизации.

  • Vagrant Box — позиционируется себя, как образ для быстрого клонирования виртуальных машин (некая базовая болванка заготовка). Можно ли использовать готовые боксы, либо создать свой. На основе выбора бокса и будет создаваться виртуальная машина.
  • Vagrantfile – это файл конфигурации виртуальной машины, расположен в директории проекта. Описывает производительность виртуальной машины, форвардинг портов, установку приложений, прочее. Если вы работает в команде или хотите чтобы другие пользователи могли развернуть ваше окружение – держите этот файл в Mercurial репозитории.
  • Provider – система для виртуализации (VirtualBox, VMWare, AWS). По умолчанию используется VirtualBox.

aollo@work:~$ apt-cache search vagrant

vagrant - Tool for building and distributing virtualized development environments

aollo@work:~$ apt-cache show vagrant | grep Version

Version: 1.4.3-1

aollo@work:~$ wget https://releases.hashicorp.com/vagrant/2.0.1/vagrant_2.0.1_x86_64.deb

aollo@work:~$ sudo dpkg -i vagrant_2.0.1_x86_64.deb

Итого получается установка vagrant + virtualbox состоит из следующих шагов:

Шаг №1: Устанавливаю Virtualbox самой последней версии + Virtualbox Extension Pack

Шаг №2: Устанавливаю из репозитариев утилиту vagrant, нет т. к. не будет работать в версией Virtualbox установленной не из репозитариев (дефолтных), у меня из подключаемых от самого приложения.

aollo@work:~$ vagrant version

Installed Version: 2.0.1

Latest Version: 2.0.1

You're running an up-to-date version of Vagrant!

aollo@work:~$ vagrant plugin install vagrant-vbguest

Installing the 'vagrant-vbguest' plugin. This can take a few minutes...

Fetching: vagrant-share-1.1.9.gem (100%)

Fetching: micromachine-2.0.0.gem (100%)

Fetching: vagrant-vbguest-0.15.0.gem (100%)

Installed the plugin 'vagrant-vbguest (0.15.0)'!

aollo@work:~$ vagrant plugin install vagrant-vbox-snapshot

а теперь я рассмотрю, как подсунуть в конфигурационный файл инициализации скрипт предварительной настройки:

aollo@work:~$ vagrant box list

There are no installed boxes! Use `vagrant box add` to add some.

aollo@work:~$ vagrant box add ubuntu/trusty64

где ubuntu/trusty64это название контейнера.

==> box: Loading metadata for box 'ubuntu/trusty64'

box: URL: https://vagrantcloud.com/ubuntu/trusty64

==> box: Adding box 'ubuntu/trusty64' (v20171208.0.0) for provider: virtualbox

box: Downloading: https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20171208.0.0/providers/virtualbox.box

==> box: Successfully added box 'ubuntu/trusty64' (v20171208.0.0) for 'virtualbox'!

aollo@work:~$

aollo@work:~$ vagrant box list

ubuntu/trusty64 (virtualbox, 20171208.0.0)

Вот скачанный бокс (образ) системы оптимизированной под использование через vagrant с Virtualbox:

aollo@work:~$ ls .vagrant.d/boxes/ -lh

итого 4,0K

drwxrwxr-x 3 aollo aollo 4,0K янв. 3 16:17 ubuntu-VAGRANTSLASH-trusty64

Структура vagrant = Boxes файла

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

aollo@work:~$ ls ~/VirtualBox\ VMs/
lubuntu Server2008R2 UDTX64 US1604__1 Клон Server2008R2
Mikrotik Server2012R2 UDTX86 W10X64 Клон US1404__1
Mikrotik2 Server2016 US1404__1 W7X64 Клон US1604__2

aollo@work:~$ mkdir ~/VirtualBox\ Vms/trusty64

aollo@work:~$ cd ~/VirtualBox\ VMs/trusty64

aollo@work:~/VirtualBox VMs/trusty64$ vagrant init

aollo@work:~/VirtualBox VMs/trusty64$ nano Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
#если нужно чтобы VM была в текущей сети (bridge)
config.vm.network "public_network", ip: "dhcp"
config.vm.provider "virtualbox" do |vb|
vb.name = "srv-trusty"
vb.cpus = 1
vb.memory = "2048"
end
config.vm.provision :shell, :path => "default.sh"
end

Теперь создаю скрипт предварительной настройкиdefault.sh

aollo@work:~/VirtualBox VMs/trusty64$ nano default.sh

#!/usr/bin/env bash
sed -i 's/lts/never/g' /etc/update-manager/release-upgrades
rm -Rf /var/lib/apt/lists/
apt-get update && apt-get upgrade -y
/etc/init.d/apparmor stop
/etc/init.d/apparmor teardown
update-rc.d -f apparmor remove
apt-get remove apparmor -y
echo "#ipv6 disable" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6=1" >> /etc/sysctl.conf
ifconfig eth1 up
dhclient eth1
sysctl -p
apt-get install nmap mc nano -y unzip --force-yes

aollo@work:~/VirtualBox VMs/trusty64$ chmod +x default.sh

После запускаю VM:

aollo@work:~/VirtualBox VMs/trusty64$ vagrant up

aollo@work:~/VirtualBox VMs/trusty64$ vagrant status

Current machine states:
default running (virtualbox)
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

aollo@work:~/VirtualBox VMs/trusty64$ vagrant ssh

vagrant@vagrant-ubuntu-trusty-64:~$ ip r

default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
10.7.8.0/23 dev eth1 proto kernel scope link src 10.7.8.70

vagrant@vagrant-ubuntu-trusty-64:~$ exit

logout

Connection to 127.0.0.1 closed.

aollo@work:~/VirtualBox VMs/trusty64$ vagrant halt

Чтобы сделать снапшот текущего состояния:

aollo@work:~/VirtualBox VMs/trusty64$ vagrant snapshot take OriginalSystem

Чтобы посмотреть все снапшоты состояний:

aollo@work:~/VirtualBox VMs/trusty64$ vagrant snapshot list

Listing snapshots for 'default':
Name: OriginalSystem (UUID: a167b48d-ee11-4208-94e0-0ed8388e7c5f) *

Чтобы отобразить список всех VM развернутых с использованием образов через vagrant:

aollo@work:~/VirtualBox VMs/trusty64$ vagrant global-status

id name provider state directory
-------------------------------------------------------------------------
022a3c8 default virtualbox poweroff /home/aollo/VirtualBox Vms/trusty64

Выключить VM по имени:

aollo@work:~/VirtualBox VMs/trusty64$ vagrant halt default

Чтобы накатить имеющийся снапшот на VM:

Чтобы удалить VM из Virtualbox:

aollo@work:~/VirtualBox VMs/trusty64$ vagrant destroy -f

Чтобы удалить конкретную VM из Virtualbox:

aollo@work:~/VirtualBox VMs/trusty64$ vagrant destroy default -f

Но увы при использовании готовых образов скачанных из интернета есть существенный недостаток, это – не понятно кто их составлял и что они содержат внутри. Правильнее будет создать свой собственный образ, как это сделать я покажу чуть позже, но заметка на этот счет будет обязательно.

Итого работает. Что меня интересовало, на этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru