Задача: Установить 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
Теперь нужно отредактировать 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.