Vagrant ч.2



Немного о создании своих кастомных боксов. Любой бокс, который вы уже откуда-то скачали и подняли можно снова превратить в "чистый" кастомный бокс. Чистый с вашей точки зрения. Т.е. например у него будет преднастроенная среда (нужная версия ruby, например, настроенная через rvm), предустановленные пакеты (go, nginx, htop, tcpdump,... да что угодно), но он еще не "заляпан" вашими тестами или по, которое вы тестите.



# vagrant init debian/jessie64

\\ создать конфигурационный файл и подготовить его (сразу) для работы с боксом jessie64

# vagrant up --provider virtualbox

\\ Используя Vagrantfile поднять виртуальную машину, используя virtulabox в качестве виртуализации

# vagrant ssh

\\ подключиться по ssh к созданной виртуалке



# (ssh).... install Vbox Additions

\\ здесь комплекс мер для установки гостевых утилит:

vagrant@jessie:~$ cd /usr/src/

vagrant@jessie:~$ sudo su

root@jessie:/usr/src# wget http://download.virtualbox.org/virtualbox/5.1.22/VBoxGuestAdditions_5.1.22.iso

root@jessie:/usr/src# mount VBoxGuestAdditions_5.1.22.iso /mnt/

root@jessie:/mnt# apt install dkms build-essential

root@jessie:/mnt# cd /mnt

root@jessie:/mnt# ./VBoxLinuxAdditions.run

\\ Ваша кастомная настройка бокса



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



# (ssh) sudo apt-get clean

\\ чистим apt кеш от скачанных пакетов

# (ssh) sudo dd if=/dev/zero of=/EMPTY bs=1M

\\ заполняем все свободное место нулями

# (ssh) rm -f /EMPTY

\\ удаляем этот файл с нулями

# (ssh) cat /dev/null > ~/.bash_history && history -c && exit

\\ чистим историю и выходим из бокса

# vagrant package --output my_own_new_fucking_amazing.box

\\ создаем box-файл из нашей виртуалки. Созданный файл можно передать любому вашему коллеге и он сможет в одну команду развернуть у себя вашу дев-среду.

# vagrant box add project_xxx_v1.0 my_own_new_fucking_amazing.box

\\ этой командой импортируется созданный бокс

# vagrant destroy

\\ удаляем созданную с помощью vagrant up виртуалку и чистим за собой.



Таким образом в следующий раз, когда вам потребуется развернуть преднастроенную виртуалку, это можно сделать всего в 2 команды:

$ vagrant init project_xxx_v1.0 && vagrant up



Здесь вы уже могли заметить то что я употребил в названии версию, но такой способ версионности неудобен. О том как же сделать нормальное управление версиями - в будущих частях.