Как установить vagrant на mac os

Обновлено: 02.07.2024

Как насчет того, чтобы поднять работу с VirtualBox на новый уровень — создавать виртуальные машины быстро и целыми пачками, организуя их в сеть? Что, если одним конфигурационным файлом и парой команд создавать простую и воспроизводимую структуру серверов, управляя шарингом папок и перенаправлением портов? Уже интересно?

Главная страница проекта сообщает, что ему уже выразили доверие такие гиганты мира IT, как Mozilla, Nokia или DISQUS. «Бродяга» (а именно так переводится название проекта) создан в лучших традициях эпохи гитхаба:

Установка

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

После этого в системе появится новая команда — vagrant. И мы уже готовы создать нашу первую виртуалку:

Ну вот и все, теперь убедимся в ее работе — проверим ее состояние:

И зайдем по SSH, увидев стандартное приветствие убунты:

Базовые сборки

Базовые сборки (base box) — это специальным способом подготовленные шаблоны виртуальных машин, из которых потом создаются непосредственно виртуальные среды вагранта. Дело в том, что для ускорения процесса создания виртуалки он копирует существующую базовую сборку и уже ее настраивает в соответствии с конфигурационным Vagrant-файлом. В результате пользователь, с одной стороны, может не беспокоиться о некоторых нюансах конфигурации виртуалки (например, объеме памяти или сетевых контроллерах), с другой стороны — все эти нюансы при необходимости могут быть легко изменены. Также в большой степени экономится время на создании новой машины, что позволяет в любой момент «убить» все ненужное, а потом создать по новой. Базовые сборки в систему добавляются командой:

Сами разработчики вагранта предлагают четыре вида базовых сборок — два последних релиза Ubuntu в 32- и 64-битном исполнении (одну из них мы только что уже установили в системе):

Кроме того, ты легко можешь создать собственную стартовую конфигурацию, но об этом чуть позже.

НОВШЕСТВА VIRTUALBOX 4.2

Кстати, не так давно Oracle выпустили новую версию VirtualBox под номером 4.2. Если ты еще не перешел на актуальную версию, то, вероятно, тебе будет интересно узнать о новшествах.

Группы виртуальных машин

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

Автостарт? Запуск «безмордовый»

Так называемый Headless launch — то есть запуск виртуалки без открытия соответствующего окна с интерфейсом машины — теперь возможен прямо из менеджера. Если раньше, чтобы запустить виртуальную машину, приходилось отправляться в консоль, набирать там что-то типа:

то теперь достаточно при запуске виртуальной машины из интерфейса VirtualBox зажать . Остановить запущенную в headless режиме виртуалку можно также из менеджера, выполнив соответствующую команду.

Создание виртуалок в два клика

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

Улучшения сетевых интерфейсов

Теперь VirtualBox позволяет создавать виртуальные машины с 36 сетевыми картами на борту. Также представлен новый функционал регулирования пропускной способности, чтобы ограничить «прожорливость» виртуалки.

Повышение производительности процессоров

Многие современные процессоры поддерживают технологию виртуализации вложенных страниц для блока управления памятью процессора (у Intel она называется Extended Page Tables, а у AMD — Rapid Virtualization Indexing). С версии 4.2 виртуалбокс теперь ее тоже поддерживает. Поэтому владельцы Core i5 или AMD Bulldozer после обновления должны заметить определенный прирост скорости работы виртуальной машины.

Новые гостевые ОС

Список официально поддерживаемых гостевых операционок теперь дополнился следующими наименованиями:

  • Mac OS X Mountain Lion
  • Windows 8
  • Windows Server 2012
  • Ubuntu 12.04 (Precise Pangolin)
  • Fedora 17
  • Oracle Linux 6.3

Так что теперь все современные операционки без проблем должны работать внутри VB.

В VirtualBox 4.2 значительно упростился процесс создания новой машины

В VirtualBox 4.2 значительно упростился процесс создания новой машины

Vagrant-файл

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

  1. Сначала загружается Vagrantfile, содержащийся в руби-геме.
  2. Следом загружается Vagrantfile из директории базовой сборки (если она было собрана с параметром --vagrantfile).
  3. Потом загружается Vagrantfile из домашнего каталога пользователя (

Полный список доступных настроек для вагрантфайла содержится в документации. Только что созданная виртуальная среда имеет минимальный конфиг вида:

И пока несколько бестолкова, но ничего, дальше мы добавим ей функционала.

Provisioning

Запуск пустой виртуальной машины (пусть даже и особым образом сконфигурированной) вряд ли может быть сильно полезен, поэтому в вагранте есть так называемые наполнители (provisioners) — различные способы настроить виртуальную машину не снаружи, а изнутри. По сути, это возможность писать различные дополнительные сценарии, которые выполняются после создания виртуальной машины. Поскольку вагрант написан рубистами, то в качестве конфигураторов машины выбраны привычные им средства: Chef Solo, Chef Server, Puppet Standalone, Puppet Server и обыкновенный Shell. Средства Chef и Puppet довольно известны и распространены и часто применяются для деплоя самых разных проектов, так что мы не будем заострять на нах внимание и рассмотрим самый простой вариант — shell-скрипт. Создадим в текущей директории файл с именем install_redis.sh и содержанием:

А в Vagrant-файл добавим команды для наполнения:

Теперь переконфигурируем нашу машину командой:

В результате на нашей виртуалке появится свежеустановленный редис.

Сетевые настройки

В первом случае мы явно задаем IP машины, а также можем опционально указать маску сети (по умолчанию используется 255.255.255.0). В таком случае конфиг приобретает вид:

Во втором случае машина получает IP по DHCP и становится полноценным членом сети, в которой расположена и хост-машина. Если на хост-машине присутствует несколько сетевых интерфейсов, то мы можем указать, который именно использовать для моста. Для вывода списка имен сетевых интерфейсов воспользуемся командой:

И, соответственно, конфигурация примет вид:

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

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

Также в VB 4.2 значительно улучшился общий интерфейс работы с машинами

Также в VB 4.2 значительно улучшился общий интерфейс работы с машинами

Несколько виртуальных машин

Кстати, в одном Vagrant-файле можно объявить сразу несколько виртуальных машин с различными настройками. Как? Я думаю, следующий пример скажет сам за себя:

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

Общие папки

Важно заметить также, что папки, использующие протокол NFS (Network File System), показывают лучшую производительность, нежели общие папки виртуалбокса. С другой стороны, NFS не поддерживается на хостах с Windows. Для того чтобы использовать NFS вместо VirtualBox shared folders, необходимо это явно указать в настройках:

Снэпшоты и песочница

Поскольку Vagrant предоставляет гибкий API для расширения своего функционала, неудивительно, что существует немалое количество плагинов для Vagrant, решающих самые различные задачи. На случай, если у тебя появятся новые идеи, какие новые возможности можно добавить в вагрант, — в документации есть специальный раздел, содержащий все необходимые настройки и примеры (bit.ly/126iIsM).

Sahara

Плагин представляет собой песочницу для виртуальных машин: если что-то поломалось, можно легко и просто откатить до последнего снэпшота. Плагин является руби-гемом (что вполне ожидаемо) и называется sahara. После его установки в вагранте появляется дополнительная команда — vagrant sandbox. Типичный пример использования выглядит так. Включаем режим песочницы:

Производим определенные действия (работаем с файлами, меняем настройки и прочее):

Если результат работы нас удовлетворил — сохраняем изменения:

В противном случае откатываем неугодные правки:

И выходим из режима песочницы:

Создание базовых сборок

Несмотря на то что сообщество уже позаботилось о наиболее распространенных образах операционных систем, тебе вполне может понадобиться иметь свою особенную сборку. Из соображений безопасности (а вдруг хакер Вася добавил свою магию в одну из сборок, лежащих в Сети), необходимости каких-то особенных настроек или просто из интереса — неважно, главное, что такая возможность есть. И здесь нам поможет гем veewee, созданный специально для этих целей. Для начала установим его:

Репозиторий veewee содержит большое количество шаблонов. Выберем интересующий нас — пусть это будет последняя версия Ubuntu Server. Теперь создадим новую базовую сборку на основе этого шаблона:

В результате у нас появится новое «определение» бейс-бокса. В папке definitions/myubuntubox содержатся файлы, описывающие нашу виртуальную машину:

Немного поправим конфигурацию виртуалки:

Теперь запустим сборку командой

Veewee задумается на время, пока будет создавать виртуальную машину, скачивать ISO-образ операционной системы, а также устанавливать и настраивать ее. После того как команда закончит работу, проверим созданную виртуалку командой

Если все прошло гладко, можно двигаться дальше. Проэкспортируем созданную виртуальную машину как файл базовой сборки vagrant:

Ну вот, собственно, и все. Теперь, чтобы использовать нашу базовую сборку, вызовем уже знакомые команды. Добавим бокс в список:

И создадим новую виртуальную машину на основе уже созданной:

Вот и все — теперь даже самые рьяные параноики не смогут нас осудить, ведь теперь весь техпроцесс создания виртуальной среды контролируется нами же.

Заключение

Удобная среда разработки позволяет больше сконцентрироваться на решаемой проблеме, а не на вопросах совместимости ПО или различиях операционных систем, и это главная фишка Vagrant. С ним можно избавиться от проблем, когда на машине разработчика все работает, а на продакшене почему-то нет. Разумеется, на данный момент несколько смущает его сильная руби-ориентированность, но будем надеяться, что со временем разработчики решат и эту проблему, расширив, например, список провизоров на Python или Java. И кстати, в настоящее время идет работа по добавлению других систем виртуализации, кроме VirtualBox.

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

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Loading

Copy raw contents

Copy raw contents

Начало работы с Vagrant

Vagrant это менеджер ваших виртуальных окружений для разработки. Фактически он является надстройкой над программой VirtualBox от Oracle, и обеспечивает быстрое создание и настройку виртуальных машин. Созданные таким образом виртуальные машины - боксы (boxes) используются разработчиками web-приложений для построения необходимой среды разработки. Затем они могут быть упакованы в специальные контейнеры (боксы), для установки и использования другими разработчиками в команде.

Где взять VirtualBox

Vagrant полностью зависит от программы VirtualBox и использует ее для создания виртуальных образов. Основным назначением VirtualBox является полная виртуализация x86 оборудования. Это проект с открытым исходным кодом, который обеспечивает виртуализацию на профессиональном уровне и может быть использована как на серверах так и на десктопных компьютерах для построения виртуальных сред. VirtualBox доступен для Windows, Mac OS X, Linux и Solaris.

На текущий момент Vagrant поддерживает VirtualBox 4.0.x, 4.1.x и 4.2.x.

Чтобы установить Vagrant, необходимо скачать соответствующий пакет или установщик с этой страницы загрузки и установить его, используя стандартную процедуру установки приложения на вашей системе. В операционных системах Windows и Mac OS X после установки приложения будет доступна команда Vagrant из командной строки. На остальных системах вам необходимо будет самим добавить этот путь /opt/vagrant/bin в переменную окружения PATH .

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

Ваше первое виртуальное окружение Vagrant

В командной строке наберите:

Эти команды необходимы для запуска виртуальной машины с помощью Vagrant. Учтите, что команды выше запускают полнофункциональную виртуальную машину на операционной системе Ubuntu 12.04LTS precise с объемом памяти по умолчанию в 512Мб.

Преимущества от использования Vagrant

Многие Web-разрабочики используют виртуальное окружение для разработки своих Web-приложений. Все большую популярность сейчас набирают облачные сервисы для построения и развертывания виртуальных окружений для продакшена и разработки, начиная от EC2, Rackspace Cloud и заканчивая более специализированными как EngineYard и Heroku. Vagrant реализует схожие принципы при создания виртуальных машин для локальной разработки и тестирования ваших приложений на рабочем компьютере. Такая организация работы повышает гибкость и продуктивность как вас так и вашей команды при разработке web-приложений.

Для развертывания и настройки виртуальных окружений Vagrant использует достаточно зарекомендовавшие себя технологии виртуализации в лице VirtualBox от Oracle и технологии автоматизированного развертывания приложений от Chef и Puppet.

Преимущества для одного разработчика

Использование однотипного окружения разработки для разных проектов расчитанных для разных версий языков программирования и фреймворков зачастую очень трудная задача. Как быть, если один проект работает на PHP4, второй на PHP 5.2.x, а третий на PHP 5.3.x или 5.4.x и его необходимо тестировать в той версии языка на которую он расчитан?

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

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

Преимущества для команды разработчиков

Все участники команды в идеале должны иметь одинаковое окружение разработки: одинаковые версии, зависимости, настройки и т.д. ведь по идее команда работает над общими проектами. Но что если часть команды работает над проектом с одной версий базы данных, к примеру, MySQL, а другая часть - над проектом где используется PostgreSQL или MSSQL. Что если одному участнику команды нужно приступить к разработке другого проекта, у которого другая версия языка или базы данных и т.д. Вобщем, сплошная головная боль, приводящая к замедлению разработки и уменьшению эффективности команды.

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

Преимущества для компании

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

После того как вы установили Vagrant на свою систему, все его управление осуществляется через команду vagrant . У этой команды есть множество необходимых подкомманд, например, vagrant up - для запуска виртуальной машины, vagrant ssh - для подключения по ssh, vagrant package - для создания пакета текущего виртуального окружения готового к развертыванию на другом компьютере и т.д. Чтобы просмотреть все доступные команды, просто наберите в командной строке команду vagrant .

vagrant command

Vagrantfile для Vagrant как Makefile для Make. Vagrantfile располагается в корне каждого Vagrant проекта и используется для настройки поведения самого Vagrant и виртуальных машин созданных с помощью него. Пример содержимого этого файла приведен ниже:

Как вы видите, содержимое файла это код на языке Ruby.

Настройка Vagrant проекта

Первым шагом для любого проекта Vagrant является создание корневой директории проекта и инициализация проекта:

команда vagrant init создаст файл Vagrantfile. Пока мы оставим этот файл как есть, но далее мы будем его редактировать для настройки виртуальной машины нашего проекта.

Теперь когда Vagrant настроен, давайте создадим небольшой web-проект, который будем потом использовать для демонстрации работы Vagrant. Создайте в корне Vagrant проекта (где расположен файл Vagrantfile) индексный html файл:

В принципе на этом настройка web-проекта закончена.

Образы виртуальных машин (Виртуальные боксы)

Следующим шагом после инициализации проекта, является создание базового бокса. Vagrant не создает виртуальную машину с нуля. Он импортирует базовый образ виртуальной машины и запускает его, применяя затем все необходимые настройки заданные в конфигурационном файле Vagrantfile. Это упрощает жизнь пользователям Vagrant, т.к. им не надо тратить время на настройку параметров виртуальной машины, таких как выделенная виртуальная память, объем диска, сетевые интерфейсы и пр.

Получение базового образа виртуальной машины

В самом начале статьи мы уже скачали базовый образ 32-битной системы Ubuntu 12.04LTS precise и добавили его в Vagrant. Обратите внимание, что если вы уже скачали образ, то вам не нужно повторно каждый раз его скачивать при последующем запуске. Vagrant поддерживает загрузку образов как из Интернета, так и с вашего жесткого диска. В самом начале статьи мы запустили следующую команду:

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

Удаление виртуальных боксов

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

При этом бокс удаляется физически с диска. После этого ни одна виртуальная машина созданная ранее на основе этого бокса не сможет быть запущена.

Настройка проекта для использования нужного виртуального бокса

Теперь, когда виртуальный бокс с именем precise32-box был добавлен в Vagrant мы можем добавлять его в наши проекты. Это делается путем записи в конфигурационный файл Vagrantfile следующей строчки:

На данный момент мы произвели самую базовую настройку нашего виртуального окружения. Мы не задали переброс портов (port forwarding), свое обеспечение для окружения (provisioning) и т.д. Но даже с такой базовой настройкой у нас получилась полнофункциональная виртуальная машина. Вы можете в этом убедится набрав следующую команду vagrant up из корневой директории проекта Эта команда запустит виртуальную машину. Чтобы остановить запущенную виртуальную машину и очистить место на диске, которое она занимала, нужно выполнить команду vagrant destroy :

Vagrant предоставляет полный доступ к виртуальной машине через SSH протокол при помощи команды vagrant ssh . После запуска этой команды откроется терминал и вы увидите приблизительно следующее приглашение командной строки:

ВНИМАНИЕ: для пользователей Windows

Т.к. ssh-клиент по умолчанию не распространяется на Windows платформе, то при запуске команды vagrant shh на Windows машине Vagrant выведет вместо окна терминала - окно с необходимой информацией для подключения к виртуальной машине по shh протоколу через ssh-клиент PuTTY:

vagrant command

PuTTY не распознает стандартные openssh ключи, поэтому вам придется преобразовать данный приватный ключ операционной в формат .ppk с помощью утилиты puttygen, которая идет в комплекте с PuTTY.

Доступ к файлам проекта с виртуальной машины

В запущенной через Vagrant виртуальной машине вы найдете расшаренную директорию, в которой находятся файлы вашего проекта. Эта директория располагается на виртуальной машине по этому пути: /vagrant . С виртуальной машины содержимое данной директории доступно как для чтения так и для записи.

Обеспечение для виртуальных боксов (Provisioning)

Мы запустили с помощью Vagrant виртуальную машину, настроили подключение через ssh, и что дальше? Для нас как для разработчиков эта машина не представляет никакого инетерса, т.к. на ней, пока, ничего не установлено кроме операционной системы Ubuntu. Для разработки нашего web-проекта нам необходимо из получившейся заготовки виртуальной машины сделать полноценное виртуальное окружение - максимально точную копию того, что у нас находится на рабочем сервере. Для этого нам надо установить нужное программное обеспечение, к примеру, nginx или Apache, php, ruby, MySQL и т.д., т.е обеспечить наш виртуальный бокс необходимой провизией (Provisioning)

Для этих целей Vagrant позволяет использовать на выбор одно из двух решений - это Chef (Chef-Solo) или Puppet. Также, при необходимости, вы можете расширять Vagrant и использовать другие средства автоматизированного развертывания приложений (но это уже не относится к теме данной статьи).

Настройка Chef и Vagrant

В данной статье мы воспользуемся заранее приготовленными рецептами для Chef, чтобы продемонстрировать развертывания виртуальной машины. Для этого отредактируем конфигурационный файл Vagrantfile:

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

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

Чтобы убедится все же что наш простой сайт уже работает, вы можете подключится по ssh к виртуальной машине и в командной строке ssh-терминала набрать следующее:

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

Проброс портов (Port Forwarding)

Проброс портов позволяет задать номер порта на гостевой машине (в данном случае на нашей виртуальной машине), который будет доступен извне на хост машине (т.е. на нашем рабочем компьютере). Это позволит нам обращаться к web-серверу установленному на виртуальной машине из браузера на нашем рабочем компьютере.

Задание номера порта для проброса

В данном случае мы хотим пробросить порт на котором работает сервер Apache. Проброс порта настраивается в файле Vagrantfile следующим образом:

Итак, мы получили готовое для использования виртуальное окружение для нашего web-проекта. Но представьте ситуацию, что вы не один, а состоите в команде и вам надо обеспечить своих коллег такимже виртуальным окружением как и у вас. Что делать? Vagrant предоставляет для этого случая возможность создавать пакеты (packages) виртуального окружения. Эти готовые пакеты вы отдаете своим коллегам и они устанавливают их у себя на компьютере.

Пакеты (Packages) это готовые к установке образы вашего виртуального окружения, которое могут быть быстро развернуты на других компьютерах. Обычно они имеют расширение .box и называются боксами. Опционально в этот бокс вы можете включить сам конфигурационный файл Vagrantfile .

Перед тем как создать бокс убедитесь что ваше виртуальное окружение проинициализировано и запущено командой vagrant up .

Далее выполните команду:

vagrant package возьмет текущее запущенное виртуальное окружение и упакует его в бокс package.box в текущую директорию откуда была запущена команда (т.е. в корне нашего Vagrant проекта). Опция --vagrantfile указывает, что бокс должен включать в себя файл Vagrantfile.pkg , чтобы при развертывании на другом компьютере была автоматически выполнена проброска портов (более подробно см. здесь).

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

После выполнения этих команд другой участник вашей команды получит готовое к работе виртуальное окружение (точную копию вашего виртуального окружения).

Остановка виртуальных боксов (Teardown)

Чтобы завершить запущенное виртуальное окружение в Vagrant существует три разных способа сделать это:

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

Все эти типы остановки виртуальных боксов рассмотрены далее.

Suspend - уход в спящий режим с сохранением текущего состояния системы

Завершение работы с уходом в спящий режим выполняется командой vagrant suspend . При этом происходит сохранение текущего состояния виртуального окружения и затем завершение его работы. Для возобновления работы достаточно выполнить команду vagrant resume .

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

Halting - обычное завершение работы

Это завершение работы выполняется командой vagrant halt . При этом выполняется обычное завершение работы (как в обычной Linux системе при выполнении команды halt ). Чтобы возобновить работу виртуального окружения после такого выключения надо выполнить команду vagrant up .

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

Destroing - завершение работы с очисткой всех файлов бокса

Наконец, последний - третий способ выключения виртуального окружения. Выполняется командой vagrant destroy . При этом происходит завершение работы с полной очисткой места на диске, которое занимало виртуальное окружение. Чтобы возобновить работу необходимо также как и в предыдущем случае выполнить команду vagrant up .

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

Давайте предположим такую ситуацию: вы закончили работу над проектом, сдали его заказчику, получили оплату. Прошло пол года, год и вот босс говорит вам, что надо возобновить работу над проектом для этого заказчика. У вас за это время могло много чего поменяться на рабочем компьютере, вы снесли и переустановили операционную систему, обновили софт, да мало-ли что еще могло произойти?

Не переживайте! Все что необходимо вам сделать чтобы возобновить работу над проектом это просто заново запустить виртуальный бокс командой vagrant up . Вот и все. Через пять минут может больше или меньше, когда Vagrant запустит виртуальную машину и установит весь нужный софт вы спокойно можете приступить к разработке вашего старого проекта.


Vagrant является инструментом для создания и распространения среды разработки. Vagrant может работать с VirtualBox/VMware, а так же AWS/OpenStack, или в контейнерах ( например Docker/LXC). Vagrant можно использовать в Unix/Linux и я в своей статье расскажу как можно установить его.

Установить Vagrant на Debian/Ubuntu.

Чтобы установить данное ПО на Ubuntu, выполните:

В качестве виртуализации, можно использовать Virtualbox, установим его:

Для ОС, Debian/Mint:

Писал как установить сам виртуалбокс:

Установим еще ruby (он потребуется для установки самого вагранта):

Производим установку Vagrant:

Установить Vagrant на CentOS/Fedora/RedHat.

Добавляем репозиторий для virtualbox:

Устанавливаем разное необходимое:

И устанавливаем virtualbox:

Писал когда-то статью по этой установке:

Выполняем установку ПО:

Обновим все пакеты:

Выполняем установку Vagrant:

Установить Vagrant на MacOS.

Устанавливаем сам Vagrant:

Менеджер для управления машинами:

Другие ОС:

Для других ОС, можно использовать git репозиторий, выполним клонирование:

Затем, переходим в этот путь (где находиться клон). Все команды будут работать с этого пути:

Запустите bundle команду с версией для установки:

Теперь вы можете запустить Vagrant, запустив bundle из внутри этого каталога.

Локальное использование

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

Во-первых, выполните следующую команду из репозитория:

Это будет генерировать файлы в exec/, включая vagrant. Теперь можно указать полный путь к exec/vagrant где-нибудь в вашей операционной системе:

Если вы не хотите указывать полный путь к Vagrant (т.е. вы просто хотите запустить его), вы можете создать символическую ссылку на ваш Exec:

Настройка Vagrant в Unix/Linux

Вагрант уже имеется, я под мои виртуальные машины, создам папку:

Заходим в директорию:

Создаём новую машину:

Vagrant box-ы тут:

Можно найти любой желающий.

Использование Vagrant в Unix/Linux

Запустим virtualbox в Linux ОС:

Переходим в директорию где лежат все VagrantFile-ы и выполняем команду:

Подключаемся к данной виртуальной машине:

Все! Установка Vagrant в Unix/Linux завершена.

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Первые шаги по настройке окружения для комфортной разработки на PHP под Mac OS. Под Ubuntu все было четко и понятно. Стабильные и к тому же свежие пакеты были всегда доступны из репозиториев. Почитав немного в сети комментарии бывалых, сложилось мнение, что было бы очень здорово оставить систему чистой, а всю разработку вести на виртуалке для создания более реального окружения, плюс к тому же родной и давно знакомый Linux. Возможно, с использованием Homebrew управление нужными пакетами будет простым, обновление будет проходить ровно и для всего, что может потребоваться, написаны brew-формулы.

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

Система и инструменты

OS X Yosemite 10.10.1 с установленными VirtualBox 4.3.18 и Vagrant 1.6.5. А также воспользуемся online-конструктором Vagrantfile - PuPHPet.

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

Что касается PuPHPet, то это отличный инструмент для экономии времени, к тому же это позволяет сделать все быстро и не заниматься работой DevOps.

  • Деплой (настройки памяти, проброс портов, IP-адрес, синхронизация директорий);
  • Серверные пакеты (будем использовать для указания списка дополнительных утилит);
  • PHP (модули, библиотеки, настройки конфигурации);
  • База данных (MySQL);
  • Веб-сервер (Nginx).

Есть и другие конструкторы Vagrantfile, список постараюсь привести в конце поста.

Сперва предлагается выбор, где будет развернута виртуалка (Locally, Rockspace, Linode, Softlayer, AWS). Сейчас интересен вариант использования на локальной машине.


В принципе, указывать необходимые пакеты и конфигурации можно в любом порядке.

В качестве провайдера будет VirtualBox, ОС - Ubuntu Precise 12.04 LTS x64. А также укажем IP-адрес гостевой машины и количество выделяемой памяти.



Далее вкладки "Webservers" и "Languages". В качестве веб-сервера выберем Nginx. Apache ставить не будем, т.к. он врядли понадобится. Здесь же можно указать настройки Virtual Hosts.


В языковых настройках выберем посвежее версию PHP, пропишем требуемые настройки ini-файла и поставим требуемые модули. Раз уж мы не устанавливаем Apache, а устанавливаем Nginx, следовательно, нужно не забыть поставить PHP-модуль fpm. Также поставим xdebug, для которого есть отдельный блок настроек и до кучи можно поставить xhprof.


При создании виртуальных хостов, настройки для fast cgi будут прописаны автоматически, поэтому заботиться об этом не нужно будет.

Далее базы данных. Тут все просто. Поставим MySQL, а также можно поставить Redis.

Во вкладке "Additional Tools" можно указать установку того же RabbitMQ, или Mailcatcher и так далее. Все они могут быть поставлены вручную при желании, либо при помощи добавления соответствующих настроек в config.yaml.

На этом всё. Переходим во вкладку "Create" и жмем на кнопку генерации config-пакета. После чего будет предложено скачать архив. Извлекаем файлы из скаченного архива и помещаем в удобную вам директорию.

Из этой папки в консоли запускаем vagrant up. После чего будет произведено скачивание Box-а (образа ОС), если он не скачивался вами ранее и затем будет создана виртуальная машина. При первом запуске будут установлены все выбранные пакеты и произведена их настройка согласно указанным параметрам в config-файле.

Для того, чтобы получить доступ к гостевой системе в консоли вводим vagrant ssh. После чего можно посмотреть список запущенных служб - в консоли sudo netstat -tlnp.


Т.к. мы указали параметры для синхронизации директорий, можно создать для localhost файл index.php и проверить, что все работает.


На этом все. В следующем посте постараюсь описать как можно работать с vagrant в любимом PhpStorm.

Ещё генераторы

  • Get link
  • Facebook
  • Twitter
  • Pinterest
  • Email
  • Other Apps

Labels

  • Get link
  • Facebook
  • Twitter
  • Pinterest
  • Email
  • Other Apps

Comments

Post a Comment

Popular posts from this blog

Турция, Олюдениз (Фетхие). Пару слов про отдых.

Читайте также: