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