Установить Vagrant on Ubuntu Trusty Desktop

Posted by

Задача: Установить 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.