1.Установка Virtualbox
Загрузка и установка пакета virtualbox
1 |
# wget http://download.virtualbox.org/virtualbox/5.1.4/virtualbox-5.1_5.1.4-110228~Debian~jessie_amd64.deb |
1 |
# dpkg -i virtualbox-5.1_5.1.4-110228~Debian~jessie_amd64.deb |
Установка неудовлетворенных зависимостей
1 |
# apt-get -f install |
Установка необходимых пакетов
1 |
# apt-get install rsync gcc make |
Установка заголовков ядра
1 |
# apt-get install linux-headers-$(uname -r) |
1 |
# apt-get install linux-headers-amd64 |
Автоконфигурирование VirtualBox
1 |
# /sbin/vboxconfig |
1 2 |
vboxdrv.sh: Building VirtualBox kernel modules. vboxdrv.sh: Starting VirtualBox services. |
2.Установка Vagrant
Загрузка пакета отсюда https://www.vagrantup.com/downloads.html
1 |
# wget https://releases.hashicorp.com/vagrant/1.8.5/vagrant_1.8.5_x86_64.deb |
Установка Vagrant
1 |
# dpkg -i vagrant_1.8.5_x86_64.deb |
1 2 3 4 |
(Reading database ... 48897 files and directories currently installed.) Preparing to unpack vagrant_1.8.5_x86_64.deb ... Unpacking vagrant (1:1.8.5) ... Setting up vagrant (1:1.8.5) ... |
в Vagrant есть такое понятие, как box-боксы. Бокс — это сохраненный образ системы. Чтобы создать новую виртуалку нужен бокс. При архивировании состояния виртуальной машины, на выходе также получаете бокс
Проверим наличие существующих box-ов
1 |
# vagrant box list |
1 |
There are no installed boxes! Use `vagrant box add` to add some. |
Установим box trusty32 (Ubuntu 14.04 32-разрядную) с сайта Vagrant, который впоследствии будет использоваться средой Vagrant
1 |
# vagrant box add ubuntu/trusty32 |
1 |
==>; box: Successfully added box 'ubuntu/trusty32' (v20160908.0.0) for 'virtualbox'! |
1 |
# vagrant box list |
1 |
ubuntu/trusty32 (virtualbox, 20160908.0.0) |
Список официальных боксов, доступних для установки
https://atlas.hashicorp.com/boxes/search
Список неофициальных боксов, доуступных для установки
http://www.vagrantbox.es/
3.Установка первого проекта, который будет развернут на основе только что добавленного в Vagrant бокса ubuntu/trusty32
Создадим каталог для проекта и перейдем в него
1 |
# mkdir myproject && cd myproject |
Запустим инициализацию Vagrant
1 |
# vagrant init ubuntu/trusty32 |
1 2 3 4 |
A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant. |
В каталоге появится файл с именем Vagrantfile. Здесь задаются параметры ВМ.
1 |
# ls -l |
1 2 |
total 4 -rw-r--r-- 1 root root 3049 Sep 16 02:28 Vagrantfile |
Настройка конфигурационного файла Vagrant
1 |
# nano Vagrantfile |
Определяем имя бокса, из которого будет создаваться виртуальная машина
1 |
config.vm.box = "ubuntu/trusty32" |
Если этот бокс не был добавлен в Vagrant ранее с помощью команды
1 |
# vagrant box add ubuntu/trusty32 |
то Vagrant автоматически скачает и добавит этот бокс
Увеличим время подключения Vagrant к виртуальной машине
1 |
# nano /myproject/Vagrantfile |
1 |
config.vm.boot_timeout = 300 |
И пробросим порт 8080 с хостовой ноды на 80 порт виртуалки
1 |
config.vm.network "forwarded_port", guest: 80, host: 8080 |
Запускаем/разворачиваем гостевую вирт.машину
(При запуске с помощью vagrant up нужно находиться в том же каталоге, где и Vagrantfile)
1 |
# vagrant up |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
……………………. ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 80 (guest) => 8080 (host) (adapter 1) default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Remote connection disconnect. Retrying... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... default: The guest additions on this VM do not match the installed version of default: VirtualBox! In most cases this is fine, but in rare cases it can default: prevent things such as shared folders from working properly. If you see default: shared folder errors, please make sure the guest additions within the default: virtual machine match the version of VirtualBox you have installed on default: your host and reload your VM. default: default: Guest Additions Version: 4.3.36 default: VirtualBox Version: 5.1 ==> default: Mounting shared folders... default: /vagrant => /myproject ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: flag to force provisioning. Provisioners marked to run always will still run. |
При этом после запуска ВМ вы сможете обращаться к ней по id уже из любого каталога.
Расположение виртуальных машин в каталоге ~/VirtualBox VMs/.
1 |
# ls -l ~/VirtualBox\ VMs/ |
1 2 |
total 4 drwx------ 3 root root 4096 Sep 16 02:37 myproject_default_1473980499228_10435 |
К гостевой виртуалки можно подключиться как с консоли ноды, выполнив команду
1 |
# vagrant ssh |
1 |
vagrant@vagrant-ubuntu-trusty-32:~$ |
Подключение к виртуалки происходит под пользователем vagrant(аутентификация происходит на основе SSH-ключей), который может делать sudo без пароля.
Либо подключившись по SSH к хостовой ноде на порт 2222 (это возможно благодаря автоматическому пробросу портов ) при создании виртуалки.
1 |
# netstat -nlpt | grep -i vbox |
1 2 |
tcp 0 0 127.0.0.1:2222 0.0.0.0:* LISTEN 1529/VBoxHeadless tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1529/VBoxHeadless |
1 |
# ssh -p 2222 vagrant@127.0.0.1 |
1 2 |
vagrant@127.0.0.1's password: vagrant@vagrant-ubuntu-trusty-32:~$ |
Пароль по умолчанию для пользователя vagrant является vagrant
Аналогично,но с использованием SSH-ключа
1 |
# ssh -p2222 vagrant@127.0.0.1 -i /myproject/.vagrant/machines/default/virtualbox/private_key |
1 |
vagrant@vagrant-ubuntu-trusty-32:~$ |
Проброс портов можно посмотреть, находясь в каталоге с проектом
1 |
# vagrant port |
1 2 |
22 (guest) => 2222 (host) 80 (guest) => 8080 (host) |
Выход из виртуалки с помощью комбинации CTRL+D или с помощью команды exit
4.Полезные команды Vagrant
Просмотр состояния вирт.машин
1 |
# vagrant status |
1 2 |
Current machine states: default running (virtualbox) |
Просмотр Vagrant-окружения для пользователя
1 |
# vagrant global-status |
1 2 3 |
id name provider state directory ------------------------------------------------------------------------- 88f2200 default virtualbox running /myproject |
Если гостевую машина удалялась не через Vagrant, она может остаться в global-status
Принудительно удалить данные о виртуальной машине
1 |
# vagrant global-status --prune |
Поставить гостевую машину на паузу
1 |
# vagrant suspend |
1 |
==> default: Saving VM state and suspending execution... |
1 |
# vagrant status |
1 2 |
Current machine states: default saved (virtualbox) |
Восстановить гостевую машину из состояния пауза
1 |
# vagrant resume |
Остановить гостевую машину
1 |
# vagrant halt |
Запустить гостевую машину
1 |
# vagrant up |
Перезапустить гостевую машину
1 |
# vagrant reload |
Удалить гостевую машину
1 |
# vagrant destroy |
Просмотр списка снепшотов гостевой машины
1 |
# vagrant snapshot list |
Создать снепшот
1 |
# vagrant snapshot save |
Восстановить снепшот
1 |
# vagrant snapshot restore |
Удалить снепшот
1 |
# vagrant snapshot delete |
Больше команд доступно по
1 |
# vagrant --help |
Установим на гостевой машине Apache
Проверим доступность дефолтной страницы Apache на гостевой машине через подключение к хостовой ноде(192.168.1.85) на порт 8080
1 |
# wget -O /dev/null -S http:// 192.168.1.85:8080 |
Создадим свой box с уже установленным Apache.
Этот box будем использовать для создания гостевой машины на новом проекте
1 |
# vagrant package |
1 2 3 4 |
==> default: Attempting graceful shutdown of VM... ==> default: Clearing any previously set forwarded ports... ==> default: Exporting VM... ==> default: Compressing package to: /myproject/package.box |
Результатом выполнения будет файл package.box
1 |
# ls -lh | grep pack |
1 |
-rw-r--r-- 1 root root 443M Sep 20 23:12 package.box |
Проверим существующие боксы
1 |
# vagrant box list |
1 |
ubuntu/trusty32 (virtualbox, 20160908.0.0) |
Выполним импорт бокса
1 |
# vagrant box add myubuntu package.box |
1 2 3 4 |
==> box: Box file was not detected as metadata. Adding it directly... ==> box: Adding box 'myubuntu' (v0) for provider: box: Unpacking necessary files from: file:///myproject/package.box ==> box: Successfully added box 'myubuntu' (v0) for 'virtualbox'! |
Теперь можно создавать новую гостевую машину из этого бокса
Создадим каталог для проекта и перейдем в него
1 |
# mkdir myproject2 && cd myproject2 |
Запустим инициализацию Vagrant
1 |
# vagrant init myubuntu |
Запускаем/разворачиваем гостевую вирт.машину
1 |
# vagrant up |
Удалить созданный box
1 |
# vagrant box remove myubuntu |
1 |
Removing box 'myubuntu' (v0) with provider 'virtualbox'... |
Удаление Vagrant
1 |
# rm -rf /opt/vagrant |
1 |
# rm -f /usr/bin/vagrant |
Удаление пользовательских данных
1 |
# rm -rf~/.vagrant.d/ |
Источник:
https://www.vagrantup.com/docs/
http://linoxide.com/opensource/basic-setup-vagrant/
https://www.digitalocean.com/community/tutorials/how-to-use-digitalocean-as-your-provider-in-vagrant-on-an-ubuntu-12-10-vps