Начало работы с Vagrant. Vagrant. Установка, настройка, использование Снэпшоты и песочница

Vagrant 2.2 - Creating a Base Box

Создание базовой коробки

Есть специальная категория ящиков, известных как «базовые ящики». Эти поля содержат минимум, необходимый для функционирования Vagrant, как правило, не выполняются путем переупаковки существующей среды Vagrant (следовательно, «база» в «базовой коробке»).

Например, ящики Ubuntu, предоставленные проектом Vagrant (например, «exact64»), являются базовыми. Они были созданы из минимальной установки Ubuntu из ISO, а не для переупаковки существующей среды.

Базовые коробки чрезвычайно полезны для того, чтобы иметь чистую начальную точку сланца, из которой можно строить будущие среды разработки. Проект Vagrant надеется в будущем предоставить базовые ящики для многих других операционных систем. До тех пор эта страница документирует, как вы можете создать свой собственный базовый ящик.

Продвинутая тема! Создание базового блока может быть трудоемким и утомительным процессом и не рекомендуется для новых пользователей Vagrant. Если вы только начинаете с Vagrant, мы рекомендуем сначала попытаться найти существующие базовые поля.

Что находится в базовой коробке?

Базовый блок обычно состоит из всего лишь минимального набора программ для работы Vagrant. Например, поле Linux может содержать только следующее:

  • Менеджер пакетов
  • Пользователь SSH, так что Vagrant может подключиться
  • Возможно, Шеф-повар, Кукольный и т. Д., Но не обязательно.

В дополнение к этому, каждому provider может потребоваться дополнительное программное обеспечение. Например, если вы создаете базовый блок для VirtualBox, вы захотите включить дополнения для гостевых виртуальных пользователей, чтобы общие папки работали правильно. Но если вы создаете базовую коробку AWS, это не требуется.

Создание базовой коробки

Создание базового поля на самом деле зависит от поставщика. Это означает, что в зависимости от того, используете ли вы VirtualBox, VMware, AWS и т. Д., Процесс создания базовой коробки отличается. Из-за этого этот документ не может быть полным руководством по созданию базового блока.

Однако на этой странице будут описаны некоторые общие рекомендации по созданию базовых ящиков и будут ссылки на руководства, ориентированные на поставщика, для создания базовых блоков.

Конкретные руководства для создания базовых ящиков приведены ниже:

Пакер и облако бродяг

Мы настоятельно рекомендуем использовать Packer для создания воспроизводимых сборок для ваших базовых ящиков, а также для автоматизации сборки с помощью Atlas . Подробнее о создании боксерских ящиков с упаковщиком в документации Atlas.

Дисковое пространство

При создании базового поля убедитесь, что у пользователя будет достаточно места на диске, чтобы делать интересные вещи, не раздражая. Например, в VirtualBox вы должны создать динамически изменяющий размер диск с большим максимальным размером. Это приводит к тому, что фактический размер диска должен быть небольшим изначально, но динамически возрастать в направлении максимального размера, поскольку дисковое пространство необходимо, обеспечивая максимальную гибкость для конечного пользователя.

Если вы создаете базовый блок AWS, не заставляйте AMI выделять терабайты хранилища EBS, например, так как пользователь может сделать это самостоятельно. Но вы должны по умолчанию устанавливать эфемерные диски, потому что они бесплатны и обеспечивают большое количество дискового пространства.

Память

Как и дисковое пространство, важно найти правильный баланс объема памяти по умолчанию. Для большинства провайдеров пользователь может изменить память с помощью Vagrantfile, поэтому не используйте слишком много по умолчанию. Это было бы плохой пользовательский опыт (и слегка шокирующий), если vagrant up из базовой коробки мгновенно потребовал много гигабайт оперативной памяти. Вместо этого выберите такое значение, как 512 МБ, которого обычно достаточно, чтобы играть и делать интересные вещи с помощью машины бродяг, но при необходимости ее можно легко увеличить.

Периферийные устройства (аудио, USB и т. Д.)

Отключите любое ненужное оборудование в базовом блоке, таком как аудио и USB-контроллеры. Обычно они не нужны для использования Vagrant и, опять же, могут быть легко добавлены через Vagrantfile в большинстве случаев.

Настройки пользователя по умолчанию

Почти каждый аспект Vagrant может быть изменен. Тем не менее, Vagrant действительно ожидает некоторые значения по умолчанию, которые заставят ваш базовый блок «просто работать» из коробки. Вы должны создать их как значения по умолчанию, если вы намерены публично распространять свою коробку.

Если вы создаете базовый ящик для частного использования, вы должны стараться не следовать им, поскольку они открывают ваш базовый блок для рисков безопасности (известные пользователи, пароли, закрытые ключи и т. Д.).

«бродячий» пользователь

По умолчанию, Vagrant ожидает, что «бродячий» пользователь SSH войдет в машину как. Этот пользователь должен быть настроен с помощью небезопасной пары ключей, которую Vagrant использует по умолчанию для попытки SSH. Кроме того, несмотря на то, что Vagrant по умолчанию использует аутентификацию на основе ключа, общим соглашением является установка пароля для «бродячего» пользователя на «бродягу». Это позволяет пользователям войти в систему как пользователь вручную, если это необходимо.

Чтобы настроить SSH-доступ с небезопасной ключевой парой, поместите открытый ключ в файл ~/.ssh/authorized_keys для пользователя-бродяги. Обратите внимание, что OpenSSH очень разборчив в отношении прав на файлы. Поэтому убедитесь, что ~/.ssh имеет разрешения 0700 а файл авторизованных ключей имеет разрешения 0600 .

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

Корневой пароль: «бродяга»

Vagrant фактически не использует или не ожидает никакого пароля root. Однако наличие общеизвестного корневого пароля облегчает для широкой общественности изменение машины при необходимости.

В общедоступных базовых блоках обычно используется пароль root для «бродяг», чтобы все было в порядке.

Без пароля

Это важно! , Многие аспекты Vagrant ожидают, что пользователь SSH по умолчанию будет настроен без пароля sudo. Это позволяет Vagrant настраивать сети, монтировать синхронизированные папки, устанавливать программное обеспечение и многое другое.

Для начала, некоторые минимальные установки операционных систем даже не включают sudo по умолчанию. Убедитесь, что вы устанавливаете sudo каким-то образом.

После установки sudo настройте его (обычно с помощью visudo), чтобы разрешить пароль sudo для «бродячего» пользователя. Это можно сделать со следующей строкой в ​​конце файла конфигурации:

vagrant ALL=(ALL) NOPASSWD: ALL

Кроме того, Vagrant не использует pty или tty по умолчанию при подключении через SSH. Вам нужно будет убедиться, что в нем нет строки, в которой requiretty необходимости. Удалите это, если оно существует. Это позволяет sudo нормально работать без tty. Обратите внимание, что вы можете настроить Vagrant на запрос pty, который позволяет сохранить эту конфигурацию. Но бродяга по умолчанию этого не делает.

SSH Tweaks

Чтобы ускорить работу SSH, даже если ваш компьютер или машина Vagrant не подключены к Интернету, установите для конфигурации UseDNS значение no в конфигурации сервера SSH.

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

Коробки для Windows

Поддерживаемые гостевые операционные системы Windows: - Windows 7 - Windows 8 - Windows Server 2008 - Windows Server 2008 R2 - Windows Server 2012 - Windows Server 2012 R2

Windows Server 2003 и Windows XP не поддерживаются, но если вы являетесь жестким поклонником XP, this может вам помочь.

Базовая конфигурация Windows

  • Выключить UAC
  • Отключить сложные пароли
  • Отключите «Shutdown Tracker»
  • Отключите «Диспетчер серверов», начиная с входа (для неядерных)

Помимо отключения UAC на панели управления, вы также должны отключить UAC в реестре. Это может отличаться от версии Windows до версии Windows, но Windows 8 / 8.1 использует приведенную ниже команду. Это позволит некоторым вещам, таким как автоматическая установка Puppet, работать в базовых коробках Vagrant Windows.

reg add HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /d 0 /t REG_DWORD /f /reg:64

Базовая конфигурация WinRM

Чтобы включить и настроить WinRM, вам нужно будет настроить службу WinRM для автоматического запуска и разрешить незашифрованное базовое auth (очевидно, это небезопасно). Выполните следующие команды из обычной командной строки Windows:

winrm quickconfig -q winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"} winrm set winrm/config @{MaxTimeoutms="1800000"} winrm set winrm/config/service @{AllowUnencrypted="true"} winrm set winrm/config/service/auth @{Basic="true"} sc config WinRM start= auto

Дополнительная конфигурация WinRM 1.1

Эти дополнительные шаги настройки специфичны для Windows Server 2008 (WinRM 1.1). Для Windows Server 2008 R2, Windows 7 и более поздних версий Windows вы можете игнорировать этот раздел.

  1. Убедитесь, что установлена ​​функция Windows PowerShell
  2. Измените порт WinRM на 5985 или обновите до WinRM 2.0

Следующие команды изменят порт WinRM 1.1 на то, что ожидается от Vagrant:

netsh firewall add portopening TCP 5985 "Port 5985" winrm set winrm/config/listener?Address=*+Transport=HTTP @{Port="5985"}

Другое программное обеспечение

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

Хотя мы планируем его в будущем, Vagrant по-прежнему не устанавливает Chef или Puppet автоматически при использовании этих средств обеспечения. Для этого пользователи могут использовать средство обеспечения оболочки, но если вы хотите, чтобы Chef / Puppet просто работал из коробки, вам нужно будет установить их в базовом поле.

Установка этого параметра выходит за рамки этой страницы, но должна быть довольно простой.

В дополнение к этому, не стесняйтесь устанавливать и настраивать любое другое программное обеспечение, которое вы хотите по умолчанию для этого базового блока.

Упаковка коробки

Упаковка коробки в файл box зависит от поставщика. Пожалуйста, обратитесь к документации по конкретному поставщику для создания базового блока. Некоторые ориентированные на провайдера руководства привязаны к верхней части этой страницы.

Распространение ящика

Вы можете распространять файл окна, но хотите. Однако, если вы хотите поддерживать управление версиями, ставя несколько провайдеров по одному URL-адресу, нажимая обновления, аналитику и т. Д., Мы рекомендуем вам добавить окно в Vagrant Cloud от HashiCorp .

Вы можете загружать как публичные, так и частные поля в эту службу.

Тестирование коробки

Чтобы проверить поле, притворись, что ты новый пользователь Vagrant и сделайте снимок:

$ vagrant box add --name my-box /path/to/the/new.box ... $ vagrant init my-box ... $ vagrant up ...

Если вы сделали коробку для какого-то другого провайдера, обязательно укажите опцию --provider для vagrant up . Если up удалось, тогда ваша коробка работала!

И о том, чем он может быть полезен для веб-разработчика.

Каждый разработчик сталкивается с необходимостью настройки на своем компьютере окружения, необходимого для запуска веб-приложений, над которыми он работает. В состав окружения могут входить, например: PHP, MySQL, nginx, а также другие СУБД, веб-сервера и т. д.

Есть разные способы управления окружениями: кто-то вручную устанавливает и настраивает в системе по отдельности каждый из необходимых компонентов, кто-то использует готовые наборы (например XAMPP, Open Server в Windows или lamp-server в Linux), но у этих подходов есть несколько недостатков, главный из которых заключается в трудности поддержки разных окружений для разных проектов. Нередко возникают ситуации, когда, например, разные проекты работают с разными версиями PHP, или им нужны разные настройки php.ini, или разные веб-сервера и т. д. В таких случаях управление окружениями становится довольно трудоемкой задачей, решить которую человеку, не имеющему квалификации сисадмина, бывает весьма непросто. В добавок - операционная система компьютера “обрастает” большим количеством разного софта, который зачастую нужен только для того, чтобы запустить локально какое-то одно веб-приложение.

Я пользуюсь Vagrant для управления окружениями, и вот почему:

  • Vagrant использует виртуализацию, а это в свою очередь дает следующие преимущества:
    • Для каждого проекта разворачивается индивидуальное окружение со своей версией PHP, своими настройками php.ini, веб-сервером и т. д., то есть - полностью изолированная виртуальная машина.
    • Операционная система компьютера не “засоряется” различным программным обеспечением, которое, по большому счету, в ней не нужно.
  • Vagrant на лету синхронизирует каталог проекта с каталогом внутри виртуальной машины. Не нужно заботиться об обновлении версий файлов внутри нее. Все происходит автоматически и мгновенно.
  • Управление окружением производится с помощью минимального набора простых команд. В самом простом случае работа с Vagrant сводится к двум командам: vagrant up (запуск) и vagrant halt (остановка).

Vagrant является оберткой над ПО виртуализации и средствами управления конфигурациями, и предоставляет способ легко и быстро всем этим управлять.

Установка и настройка

Рассмотрим по шагам процесс установки Vagrant, а также развернем для примера готовый образ (или, как принято говорить в терминологии Vagrant - бокс), содержащий предустановленное программное обеспечение, необходимое для веб-разработки, в том числе LAMP-стек, и запустим в получившимся окружении веб-приложение (возьмем для примера ).

Я использую Linux Mint, которая основана на Ubuntu, поэтому все описанные манипуляции применимы в этих ОС. К сожалению, я не знаю точно, насколько стабильно все будет работать в Windows, однако все описанное ПО имеет версии для Windows, поэтому, надо полагать, там тоже все должно работать.

Итак, поехали.

Установка VirtualBox

Так как Vagrant оперирует виртуальными машинами, то ему для работы необходимо ПО виртуализации. Установим VirtualBox, который является широко распространенным, удобным и простым в использовании примером такого ПО. Для установки следуйте инструкциям со страницы: https://www.virtualbox.org/wiki/Linux_Downloads

Установка Vagrant

Затем установим сам Vagrant.

Для установки выполните:

$ sudo apt-get install vagrant

Или скачайте и установите последнюю версию отсюда: https://www.vagrantup.com/downloads.html

Установка плагинов Vagrant

Плагин vbguest нужен на тот случай, когда версии VirtualBox Guest Additions внутри виртуальной машины и на вашем компьютере различаются, этот плагин сам в автоматическом режиме разрешит данную проблему. Для установки выполним:

$ vagrant plugin install vagrant-vbguest

Плагин hostmanager нужен для того, чтобы Vagrant мог управлять именами хостов для виртуальных машин. Установим его:

$ vagrant plugin install vagrant-hostmanager

Загрузка файла конфигурации для Vagrant

Как уже говорилось выше, мы будем разворачивать уже готовое сконфигурированное окружение - . В репозитории Scotch Box находится конфигурационный файл Vagrantfile , который содержит необходимую Vagrant информацию для развертывания и запуска окружения. Скачаем репозиторий:

$ git clone https://github.com/scotch-io/scotch-box.git

Развертывание и запуск окружения

Для того, чтобы Vagrant развернул и запустил окружение, необходимо выполнить в каталоге проекта, то есть там, где находится файл Vagrantfile , единственную команду - vagrant up .

Перейдем в каталог, куда мы скачали репозиторий Scotch Box и сделаем это.

$ cd scotch-box $ vagrant up

Это на самом деле все, что нужно сделать. Первый запуск обычно занимает довольно длительное время, так как Vagrant должен скачать и развернуть образ виртуальной машины, разрешить конфликт версий VirtualBox Guest Additions, если он есть, а также установить, при необходимости, различное программное обеспечение внутри виртуальной машины. Второй и последующие запуски будут осуществляться за считанные секунды.

Scotch Box по умолчанию использует адрес http://192.168.33.10 . После того, как выполнится команда vagrant up , перейдите в своем браузере по этому адресу и убедитесь, что все работает.

Если вы хотите остановить виртуальную машину, выполните команду vagrant halt .

Если вы пользуетесь режимом гибернации, то перед тем, как переводить в него компьютер, рекомендуется выполнить для запущенного окружения команду vagrant suspend , так как в противном случае ОС может “зависнуть” при переходе в гибернацию. После выхода из режима гибернации запустите окружение, снова выполнив vagrant up .

Если открыть GUI Virtual Box, то можно увидеть, что Vagrant создал для вас обычную виртуальную машину. Ничего не мешает вам управлять ей как любой другой виртуальной машиной, используя средства Virtual Box.

Демонстрация работы

Как и говорилось выше, продемонстрируем работу окружения на примере .

Скачайте последнюю версию WordPress и распакуйте ее в каталог scotch-box/public, котрый в Scotch Box является корневым каталогом веб-сервера. Не забудьте перед распаковкой удалить файл index.php из каталога public.

Теперь перейдите по адресу http://192.168.33.10 , вы должны увидеть первый шаг установки WordPress:

Обратите внимание на то, что все изменения файловой системы внутри каталога public мгновенно перенеслись внутрь виртуальной машины без необходимости производить какие-либо дополнительные манипуляции. Все работает прозрачно - так, будто никакой виртуальной машины нет вообще: вы меняете файлы, открываете url в браузере и наблюдаете изменения.

На шаге, посвященном настройке соединения с базой данных, укажите параметры, описанные на сайте

После завершения всех шагов, вы получите установленный экземпляр WordPress внутри вашей виртуальной машины.

Работайте над проектом как обычно, например откройте каталог проекта в IDE и ведите разработку там.

Следует упомянуть, что в том случае, если вы используете PhpStorm, вас ждет приятный сюрприз в виде поддержки Vagrant внутри IDE. Откройте в главном меню “Tools” -> “Vagrant”. Вы можете управлять окружением для проекта прямо из PhpStorm, не заходя в командную строку.

Что дальше?

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

Scotch Box устроен таким образом, что сам образ виртуальной машины содержит все необходимое предустановленное ПО. Более распространен такой сценарий использования Vagrant, когда берется чистый образ системы и, с помощью конфигов, описывается: что необходимо установить туда и как все это настроить.

Laravel .

Спасибо за внимание!

Сразу хочу обозначить термин VM - виртуальная машина, это (guest-машина).

1. Первым делом нам понадобится уже установленная ось, можно зарегистрироваться на сайте vagrantcloud.com и затем в меню сайта выбрав Discover найти нужный BOX. Но, я не доверяю чужим BOX-ам и буду делать свой. Поэтому, давайте скачаем ISO например дистрибутива debian . Теперь нам нужнен VirtualBox (если у Вас его нет, то установите) в котором мы подключаем скачанный Debian.ISO и приступаем к установке.

2. У Вас запустился процесс установки Debian, где Вас попроят ввести различные данные, и это ключевой момент, т.к. разработчики Vagrant-a ввели :

  • Hostname: vagrant-, например: vagrant-debian-wheezy-86
  • Domain: vagrantup.com
  • Root Password: vagrant
  • Main account login: vagrant
  • Main account password: vagrant

а) нужно на VM установить SSH-сервер:

Sudo apt-get install openssh-server

иначе Vagrant ругнется так:

Failed to connect to VM!
Failed to connect to VM via SSH. Please verify the VM successfully booted
by looking at the VirtualBox GUI.

б) Оказывается, не смотря на то, что мы создали пользователя vagrant и всем пользователям назначили пароль vagrant, НУЖНО использовать SSH-ключи, несомненно это глупость, но что поделать. В комьюнити Vagranta по этому поводу существует соглашение, что Vagrant использует для подключения к VM приватный ключ https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant А мы должны в VM пользователю vagrant добавить публичный ключ https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub в его ~/.ssh/authorized_keys . Если этого не сделать, то Vagrant ругнется так:

SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.

в) (возможно не обязательно) Теперь приступим к установке virtual box guest additions. Для этого нужно установить какие-то пакеты загловков:

sudo apt-get -y install linux-headers-$(uname -r) build-essential dkms

выключите VM и в окне VirtualBox выберите “Devices” и “Install Guest Additions”. Это приатачит “Guest Additions” к вашему VM-сидирому. Теперь осталось включить VM, примонтировать сидиром и установить “Guest Additions”.

sudo apt-get -y install linux-headers-$(uname -r) build-essential
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom
sudo sh /media/cdrom/VBoxLinuxAdditions.run

г) (возможно не обязательно) зачем-то делаем группу админ, пользователям которой как я понял разрешаем входить по SSH без пароля:

adduser vagrant admin

Sudo не установлен по умолчанию в Debian , поэтому в моем случае придется его установить:

и запускаю программу правки файла /etc/sudoesr

открывается стандартный текстовый редактор (в моем случае nano), и в самом конце файла нужно добавить:

Defaults env_keep="SSH_AUTH_SOCK" %admin ALL=NOPASSWD: ALL Defaults:vagrant !requiretty

3. При создании VM (виртуальной машины) я дал ей название debian-wheezy-86 , соответственно у меня в директории где установлен VirtualBox, создалась директория debian-wheezy-86 , давайте зайдем туда:

cd /home/programs/VirtualBox

4. Установите Vagrant

sudo apt-get install vagrant

5. Можно приступать к созданию Vagrant BOX-а:

vagrant package --base debian-wheezy-86

и через минутку получаем файл package.box

6. Теперь нужно сообщить vagrant-у про этот box:

vagrant box add debian-wheezy-86 package.box

синтаксис: vagrant box add НАЗВАНИЕ ФАЙЛ.box

7. Можете удалить директорию с установленным Debian:

rm -rf /home/programs/VirtualBox/debian-wheezy-86

8. Создадим и настроим Vagrant-проект

mkdir vagrant_getting_started
cd vagrant_getting_started
vagrant init

8. Пропишем нужные настройки в файл Vagrantfile

# название виртуальной машины, которую собираемся использовать
config.vm.box = "debian-wheezy-86 "

# чтобы можно было отслеживать загрузку виртуальной машины
config.vm.boot_mode = :gui

# по данному IP можно будет добраться до виртуальной машины
config.vm.network:hostonly, "11.11.11.11"

# проброс портов (по порту 8080 из host-машины мы попадаем на 80 порт guest-машины)
config.vm.forward_port 80, 8080

# Расшариваем папку. Порядок аргументов: идентификатор, директория на guest машине, директория на host машине
config.vm.share_folder "myShareFolder", "/var/www", "./"

9. Запускаем машину:

и выглядит это так:

$ vagrant up
VM already created. Booting if it"s not already running...
Clearing any previously set forwarded ports...
Forwarding ports...
-- 22 => 2222 (adapter 1)
-- 80 => 8080 (adapter 1)
Creating shared folders metadata...
Clearing any previously set network interfaces...
Preparing network interfaces based on configuration...
Booting VM...
Waiting for VM to boot. This can take a few minutes.
VM booted and ready for use!
Configuring and enabling network interfaces...
Mounting shared folders...
-- v-root: /vagrant
-- myShareFolder: /var/www
$

За последнее время обилие инструментов для разработчиков неуклонно растёт: Ansible, Otto, Vagrant, Nomad, Consul, Puppet, Chef... Что это всё? Дабы немного прояснить ситуацию, сегодня я бы хотел рассказать о таком замечательном инструменте как Vagrant, который сам использую практически каждый день.

Что такое Vagrant?

Vagrant это инструмент, позволяющий унифицировать среду разработки и среду в которой этот код будет разворачиваться, используя технологию виртуализации. Проще говоря, если вы как и я любитель делать проекты в среде Windows, но в будущем разворачивать их на *nix машинах, то Vagrant вам в помощь:-) Очень часто возникают проблемы на фоне того, что среда разработки значительно отличается от среды, где будет крутиться конечное приложение. Например, в Windows название папки с Заглавной буквы и со строчной это одно и то же, хотя в unix системах это две разные папки.

С высоты птичьего полёта, Vagrant ничто иное как CLI (интерфейс командной строки) для VirtualBox с блекджеком и Vagrantfile.

В качестве демонстрационного примера мы создадим изолированную операционную систему на базе Ubuntu 14.04.3 LTS с виртуальным окружением Python + работающим Django приложением внутри.

Терминология

  • Виртуальная ОС - изолированная операционная система, работающая внутри программы-эмулятора
  • Программа-эмулятор - программа, использующая аппаратные средства виртуализации компьютерного процессора (прим. VirtualBox, VMWare, Parallels Desktop и т.д.) для создания изолированных виртуальных операционных систем внутри 1 физической машины
  • - программа-обёртка вокруг программы-эмулятора "с плюшками"
  • - файл, описывающий характеристики и поведение будущей виртуальной операционной системы на языке программирования Ruby

Установка

Весь процесс установки и настройки будет происходить в Windows среде. Для того чтобы установить Vagrant, необходимо выполнить следующие шаги:

  • Скачать последнюю версию Vagrant для Windows с официального сайта и установить.
  • Скачать VirtualBox для Windows с официального сайта и установить.

При установке Vagrant и VirtualBox не должно возникнуть никаких проблем, поэтому сразу можно переходить к следующему пункту - настройке.

Настройка

После установки Vagrant и VirtualBox желательно перезагрузить компьютер. Если всё прошло без косяков, то можно приступить к запуску первой виртуальной машины.

Для этого необходимо ввести следующие команды:

Mkdir vagrant_demo && cd vagrant_demo vagrant init ubuntu/trusty64

Тем самым мы создали Vagrantfile, в котором заданы настройки по-умолчанию, а именно:

  • В качестве дистрибутива используется Ubuntu 14.04
  • Порт 22 гостевой (виртуальной) машины пробрасывается на 2222 порт хост машины
  • Текущая директория./vagrant_demo пробрасывается на директорию /vagrant виртуальной машины
  • Гостевой системе выделяется 512 МБ ОЗУ и 40 ГБ жесткого диска

Содержимое ничто иное как код на языке Ruby, задающий определённые характеристики и поведение.

ubuntu/trusty64 - это кодовое название vagrant box, т.е. готового образа системы. Все образы так называемых vagrant boxes можно найти .

Для того чтобы запустить виртуальную машину необходимо выполнить:

Ниже представлен скриншот процесса загрузки бокса и его последующей установки

После успешной загрузки и настройке достаточно выполнить команду

Но, в стандартной Windows отсутствует утилита ssh, поэтому можно получить вот такое сообщение об ошибке:

`ssh` executable not found in any directories in the %PATH% variable. Is an
SSH client installed? Try installing Cygwin, MinGW or Git, all of which
contain an SSH client. Or use your favorite SSH client with the following
authentication information shown below:

Но не стоит расстраиваться, достаточно установить пакет утилит Cygwin и прописать в переменную PATH путь до бинарников.

После успешного выполнения команды появится окно с шеллом:

Поздравляю! Первый этап выполнен. Для отключения виртуалки необходимо выполнить команду из хост-машины:

Vagrant halt

Список основных команд:

  • vagrant halt - останавливает виртуальную машину
  • vagrant destroy - удаляет виртуальную машину
  • vagrant suspend - "замораживает" виртуальную машину
  • vagrant global-status - выводит список всех ранее созданных виртуальных машин в хост-системе
  • - подключается к виртуальной машине по SSH

Демо пример с Vagrant, поднимающим отдельную виртуальную машину с виртуальным окружением Python на борту, а также Django приложением, можно найти на

— это программа-ассистент по сборке и управлению виртуальными машинами. С её помощью можно автоматизировать процесс развёртывания кастомных (с пользовательскими настройками) виртуальных машин.

Суть работы Vagrant в том, что она с помощью написанных специально для этой программы конфигурационных файлов, собирает виртуальные машины, в которых уже применены определённые настройки. Авторы некоторых систем распространяют их в виде такого конфигурационного файла Vagrant и получив этот файл мы можем собрать на своём компьютере эту ОС. Мы можем использовать конфигурации по умолчанию или вносить в них изменения. В результате будут получаться ОС от автора, но с определённым тюнингом.

Как установить Vagrant в Linux

Поскольку Vagrant это всего лишь надстройка над VirtualBox , то начать нужно с установки VirtualBox .

Теперь, когда VirtualBox уже есть в вашей системе, то поищите vagrant в стандартных репозиториях вашей системы — скорее всего, он там уже есть.

Для установки в Ubuntu, Linux Mint, Debian, Kali Linux и их производные выполните команду

Sudo apt install vagrant

Для установки в Arch Linux, BlackArch и их производные выполните команду:

Sudo pacman -S vagrant

Как установить Vagrant в Windows

Для Vagrant в Windows также имеется графический установщик, скачайте его и выполните установку.

В качестве папки установки Vagrant выбирает не C:\Program Files\, а другую папку, это позволяет программе проще работать с разрешениями и правами доступа:

После перезагрузки откройте командную строку Windows. Это можно сделать нажав Win+x , в открывшемся окне выберите Windows PowerShell (администратор) . В открывшемся окне для перехода из PowerShell в командную строку введите

В этой консоли выполните команду:

Должна появиться стандартная справка по пользованию программой:

Если возникнет ошибка, либо просто для профилактики, выполните обновление плагинов:

Vagrant plugin update

Установка плагина vagrant-vbguest

vagrant-vbguest — это плагин Vagrant, который автоматически устанавливает в гостевые системы VirtualBox Guest Additions — гостевые дополнения VirtualBox.

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

Vagrant plugin install vagrant-vbguest

Если в Windows у вас проблемы с установкой этого плагина, то попробуйте следующую команду:

C:\vagrant\vagrant\embedded\bin\gem.bat install vagrant-vbguest

Также в Windows файервол может запросить разрешение для выхода в сеть программой:

Плагин vagrant-vbguest запускается и используется по умолчанию всеми виртуальными машинами. Он запускается автоматически сразу после старта коробки (так в Vagrant называют виртуальные машины). Получается что он работает каждый раз при загрузке коробки, то есть при использовании команд vagrant up или vagrant reload . Он не будет работать при команде vagrant resume (или vagrant up на приостановленной коробке) чтобы не тратить время при возобновлении работы виртуальной машины.

Чтобы отключить этот плагин, в настройках виртуальных машин установите vbguest.auto_update на false .

Как пользоваться Vagrant

Vagrant собирает виртуальные машины исходя из конфигурационного файла Vagrantfile . Вы можете создавать и использовать для быстрого развёртывания свои варианты, либо устанавливать различные операционные системы подготовленные другими. Большой сборник содержится в , там вы можете выбрать заинтересовавшую вас коробку и собрать, а затем запустить с помощью команды вида:

Например, offensive-security подготовили kali-linux-light ,

тогда установка и запуск выполняются командами:

Vagrant init offensive-security/kali-linux-light vagrant up

Примеры других популярных систем:

Для разных систем выделите отдельные папки, то есть запускайте приведённые выше команды в разных папках.

Vagrant умеет не только скачивать и запускать коробки, он также умеет запускать внутри них пользовательские скрипты — поэтому некоторые системы могут устанавливаться сложнее, чем показано здесь. Для них может потребоваться скачивание полного архива. Затем нужно будет перейти в папку, содержащую файл Vagrantfile и уже там запустить vagrant up .