Знакомство с Vagrant

создание окружения с помощью Vagrant

Vagrant — свободное и открытое программное обеспечение для создания и конфигурирования виртуальной среды разработки. Является обёрткой для программного обеспечения виртуализации, например VirtualBox, и средств управления конфигурациями, такими как Chef, Salt и Puppet. Инструмент написан на Ruby; при этом его можно использовать в проектах, создаваемых на других языках программирования, таких как PHP, Python, Java, C# и JavaScript[1].

Зачем же нужен вагрант? Почему просто не обойтись виртуальной машиной?
Конечно, можно обойтись, но с вагрантом все становится значительно проще. Несколько основных причин почему стоит его использовать:

  • не нужно весь софт ставить руками (php, apache, mysql и т.д.), все то, что позволит развернуть полноценное окружение.
  • легкий шаринг виртуалки между разработчиками (понадобится лишь Vagrantfile).
  • вагрант позволяет создавать свои собственные боксы (слепки с готовой виртуальной машины, которые также можно “шарить” между коллегами). В этом случае вы можете пошарить виртуалку с развернутым сайтом, импортированной базой и файлами сайта.

В случае вагранта все окружение будет аналогичным у всех разработчиков, что позволяет избежать множества проблем и появление энвайроменто-зависимых багов (тех, которые воспроизводятся на конкретной локальной машине ввиду различного окружения). Особенно важно обеспечить безболезненный вход в проект новых членов команды, которые сразу начнут “вливаться” в проект, а не тратить долгие часы/сутки на настройку локального окружения.

Содержание

Установка Vagrant

Vagrant (на момент написания статьи имеет версию 1.8.1) поддерживает несколько программ виртуализации (в терминологии вагранта - провайдеров), а именно: VMware[2], VirtualBox[3], Docker[4], Hyper-V[5]. Есть возможность поддержки кастомного провайдера, как гласит документация[6]. В данной статье рассмотрим разворот виртуальной машины на базе VirtualBox. Далее предполагаю, что у вас уже установлен виртуалбокс, если нет, то настоятельно рекомендую это сделать ознакомившись со статьей Установка и настройка VirtualBox.

Установка рассмотрена на примере Windows 7. Скачиваем exe файл с официального сайта[7] и запускаем.
Окно приветствия установщика, жмем Next.
окно приветствия утстановки
Подтверждаем, что принимаем лицензионное соглашение.
лицензионное соглашение
Указываем путь директории установки. В данном случае оставляем дефолтный и жмем кнопку Install
указание директории установкиэтап готовности у инсталляции
Процесс установки займет некоторое время.
процесс инсталляцииустановка завершена
После установки, Vagrant попросит перезагрузиться.
После перезагрузки, для того чтобы проверить работоспособность вагранта, запускаем командую строку и проверяем статус

1
vagrant -v

В случае успешной установки сообщение будет таким

1
Vagrant 1.8.1

Создание окружения

Для того, чтобы создать окружение, достаточно проделать несколько шагов.
Во-первых, необходимо выбрать/создать папку на диске, в которой будет располагаться директория настроек окружения. Имя папки по возможности должно состоять из латиницы и не иметь в себе пробелов во избежания потенциальных проблем.
Далее открываем командую строку, переходим в нужную папку и запускаем команду

1
vagrant init precise64 http://files.vagrantup.com/precise64.box

Рекомендую предварительно убедиться, что виртуалбокс на вашей машине поддерживает 64-bit ubuntu, в противном случае используйте 32-bit

1
vagrant init precise32 http://files.vagrantup.com/precise32.box

После запуска данной команды в текущей папке будет создан Vagrantfile. Precise64 - означает готовый бокс (в данном случае будет установлена ubuntu 12.04 для 64-разрядной системы). Все готовые боксы можно посмотреть по ссылке[8], приведенной в конце статьи в разделе Дополнительная информация.
vagrant init
Запускаем команду

1
vagrant up

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

1
vagrant ssh

Конфигурация PHPStorm для управления вагрантом

PHPStorm уже относительно давно поддерживает вагрант еще с 7 версии. Для конфигурации необходимо кликнуть по иконке настроек config.jpg или пройти по пути через главное меню File → Settings. В открывшемся окне в поле Vagrant executable указываем путь до exe файла, для Instance folder — путь до папки с настройками для текущего проекта (путь до папки, где лежит Vagrantfile для данного проекта) и жмем кнопку Apply или ОК.
vagrant settings phpstorm
На этом настройка завершена, теперь мы можем легко управлять созданной виртуальной машиной. Доступные команды:

  • up - запуск виртуальной машины
  • reload- перезагрузка
  • provision- запуск дополнительных скриптов (bash, Chef и т.д.) в настройках Vagrantfile
  • suspend- постановка на паузу виртуалки
  • resume- снятие с паузы
  • halt- остановка машины
  • destroy- удаление

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

1
vagrant halt

Дополнительная информация по статье

  1. https://ru.wikipedia.org/wiki/Vagrant - информация о вагранте на wikipedia
  2. https://www.vmware.com/ - официальный сайт VMware.
  3. https://www.virtualbox.org/ - официальный сайт VirtualBox.
  4. https://www.docker.io/ - официальный сайт Docker.
  5. https://www.microsoft.com/hyper-v - официальный сайт Hyper-V.
  6. https://www.vagrantup.com/docs/ - онлайн документация на вагрант.
  7. https://www.vagrantup.com/downloads.html - страница загрузок вагранта под разные операционные системы.
  8. https://atlas.hashicorp.com/boxes/search - готовые боксы для загрузки через Vagrantfile.
  9. Версии программных продуктов, используемых в статье: PHPStorm 2016.1, Vagrant 1.8.1, VirtualBox 5.0.10